Screwjack by Hunter S Thompson (Books 2016, 15)
Long-time HST readers like me will be familiar with this title. It always appeared on the dust jacket or inside the book in the list of other books by the author. But you never saw it anywhere. Back before Amazon, when bookshops were still a common haunt (and dinosaurs roamed the Earth), you used to look all over the shop for Thompson’s work, because it was rarely consistently filed. That is, not every bookshop put it in the right section. After all, what is the right section? History? Sociology? Politics?
Really, the right section is probably “Journalism,” but most bookshops don’t (or didn’t) have such a section.
Anyway, it turns out that Screwjack wasn’t journalism, but fiction, and in any case was a limited-edition release of only a few hundred or so, and when the web and eBay came along, copies used to go for hundreds of pounds or dollars.
Sometime after he died it got a proper release, and I finally got round to buying it. It’s a slim, small-format hardback, containing three stories. And I’ve got to say that just a few weeks after reading them, they’re almost totally unmemorable. So maybe there was a good reason for not releasing them properly all those years.
Oh well. One for the completists.
Can We Stick With Labour Now?
This story about Labour giving in to Brexit is the latest straw in a… problematic few months. I’m not sure I can stay a member of the Labour Party if the leadership is now as definitively opposed to sanity as this. While still failing to actually oppose this terrible government.
Never Mind the Bollocks: Women Rewrite Rock by Amy Raphael (Books 2016, 14)
Been reading this over a period of a year or so, on and off, so it’s not really this year’s book. But that’s no reason not to write about it. It was published in 1994 and consists of interviews with a selection of the women who were relatively newly on the scene, or were established but getting some more visibility, around that time. It was the time of Riot Grrrl, among other movements.
So among the interviewees are Courtney Love, Huggy Bear, Liz Phair, Tanya Donnelly, Kristin Hersh, Kim Gordon… even Bjork. But there’s someone missing from the book. Nearly all of the interviewees, when talking about their influences or other women who were doing something interesting at the time, mention PJ Harvey. And she is not interviewed. Which is a shame. I would have loved to have read her thoughts on making music back then (or now, for that matter). And I’m sure Amy Raphael would have loved to interview her, so I’m guessing she didn’t want to do it.
But aside from that, it’s an interesting work. Very much a document of its time, though no doubt the problems and challenges that these women faced have not changed that much. A similar book today, though, would have a very different complement of interviewees; and indeed would need a different subtitle: women musicians are much more prominent in pop and R&B today, from Beyoncé on down. But maybe not so much in rock, unfortunately.
Well worth a read, though.
Trump/Schulz
If you’re a fan of the Illuminatus trilogy, or the works of Robert Anton Wilson in general, the idea that Trump’s speech is like the last words of Dutch Schulz is particularly amusing.
On the Pronunciation of "X"
Now that the new version of Apple’s PC operating system has launched, some thoughts on something that’s been bugging me for a while.
Apple’s OS was called “OS X” from about 2000 or so. At one time it was “Mac OS X,” then at some point they dropped the “Mac” part. Now, of course, they’re dropping the “X,” (and the capital “M”) and going over to calling it “macOS.”
In the old version, I knew that the “X” was the Roman numeral for 10. It was release 10 of their operating system, so that was fine. But I always pronounced it as the letter “X” in my mind. Not least because, as the version numbers incremented, they were presented like this: 10.2, 10.3, and so on. Or more fully, “Mac OS X 10.2.”
So how were we meant to say that? “Mac Oh Ess ten ten point two”? Surely not. You can see why my internal monologue pronounced it “Oh Ess Ex ten point two”.
And so it was and so I left it. I knew the “X” had originally meant “ten,” but I couldn’t imagine that anyone would still pronounce it that way. Until I started listening to podcasts.
Wherein erudite, knowledgable Apple users such as John Gruber, or the hosts of the Accidental Tech Podcast were clearly heard to talk about “Oh Ess ten.” Though they mostly avoided saying the full, convoluted, Roman and Arabic mix of numbers. I think I did once hear David Sparks on Mac Power Users saying “Oh Ess ten ten point eight” (or whatever minor release number it might have been).
Still, I didn’t let it bother me. It wasn’t doing any harm, after all.
But then people started talking about relative sizes. I think I first noticed it when retina screens were being discussed. If you’re going to provide graphical resources to support both retina and non-retina screens, you have to provide versions of the image files at different resolutions. These are referred to in writing as “1x” and “2x” versions.
Now, it is obvious to me that that isn’t a letter “x” there (even thought that’s what I typed), but a multiplication symbol. More properly rendered as “×”.1 The idea being that you have the original file, and one at twice the resolution. The multiplication symbol is said as “times.” So we have “one times” and “two times.” Right?
But those pesky podcasts.
Soon they were filled with “one ex” and “two ex.” It was the OS X problem all over again — but this time in reverse!
But I gradually realised I might be wrong in my assessment. Graphics files are complicated beasts, after all. A file suitable for a retina screen doesn’t have twice the pixels needed for an older screen, for example: it has four times as many. There are twice as many on the x-axis and twice as many on the y-axis.
And that’s when I realised that the “x” might refer to the x-axis. Saying a file was “2x” could be shorthand for saying that it had twice as many pixels on both its x- and y-axes.
In which case pronouncing it “two ex” would be right after all. Perhaps the terminology came from developers and designers referring to size of the files.
Except… I have subsequently heard people say other numbers followed by “ex,” when what they clearly meant was a multiplier. Specifically, I heard CGP Grey saying “ten ex” when talking about a tenfold increase in something like YouTube subscribers. And he used to be a maths teacher, so he should really know better.
Can we ever escape from this insidious invasion of “ex” into spaces where “times” belongs? Probably not. But it’s disturbing when otherwise-smart people make themselves sound so ignorant.
(And don’t get me started on the full-stop or period character that splits up those version numbers. Hint: it’s “point”, not “dot.”)
-
That may or may not look any different from the letter, depending on the typeface you are seeing it in, but it’s a different unicode character. ↩︎
Huffington Trump
I’ve been meaning to note that I love the way that every article in The Huffington Post about Trump has this note appended:
Editor’s note: Donald Trump regularly incites political violence and is a serial liar, rampant xenophobe, racist, misogynist and birther who has repeatedly pledged to ban all Muslims — 1.6 billion members of an entire religion — from entering the U.S.
Reamde By Neal Stephenson (Books 2016, 13)
It’s a page-turner, an engrossing thriller. I got through the 1040 pages in about a week of being on holiday in Greece (it would have taken me a lot longer at home, especially if I had been working).
Its biggest flaw is exactly how much of a well-oiled machine it is, how beautifully, unreasonably jigsaw-like the pieces all fit together, so that all the players end up together at he right place at the right time for the denouement (which event itself takes up probably close to 200 pages). It’s a bit — no, extremely unlikely that all of the disparate characters could have come together just as they do.
But by the time it’s clear they’re going to, we’re so engaged with them all that we want it to happen just like it does. It’s only when standing back afterwards (or to be fair, during breaks when in the course of reading) that you we think, “This is actually kind of preposterous.”
But still, preposterous fun.
The Sandman: Overture by Neil Gaiman and others (Books 2016, 12)
Gaiman returns to the character and story that made him famous (and wins the graphic story Hugo award by doing so).
This is a prequel to the original story. In that, you’ll recall (or if you don’t you should go and read them), Morpheus, the Lord of Dreams, starts by being captured by a wizard as he returns exhausted from an earlier adventure.
This is that earlier adventure. And it’s right up there with the rest of the Sandman stories. Highly recommended.
Normal by Warren Ellis (Books 2016, 11)
I’m not sure this counts as a novel, by length, but never mind. Released as four Kindle-only ebooks over four weeks, it builds up into at least a novella. And a pretty god one. Very much built on problems of today, it concerns a group of people at an institution that cares for sufferers of “abyss gaze”: futurists who have thought too much about possible futures, until doing so broke their brains.
It’s an interesting idea, and of course to make it a story, a crisis happens. Well worth a read.
Sally Heathcote, Suffragette by Mary M Talbot, Kate Charlesworth and Bryan Talbot (Books 2016, 10)
After Mary & Bryan’s biography/autobiography hybrid about Mary herself and James Joyce’s daughter, they added another collaborator to write this fictional life story about a woman at the heart of the suffragette movement. Compelling, moving, and educational. What more could you want?
The Sadness of Empty Seats
It is very sad to see all the empty seats at the Olympics in Rio — especially remembering how hard it was to get tickets four years ago.
I expect that not many people in Brazil are well enough off to afford tickets — though you’d think it would be incumbent upon the organisers to set the prices at a level where people could afford them. It’s not as if it’s the ticket-buyers who pay for the bulk of the games’ costs, after all. That would come from the corporate sponsors. Or so I would expect: I don’t have the actual figures.
You’d think that there would be a lot of tourists. I’m sure there are, but it looks like it’s not enough to fill the seats. Maybe getting to Brazil and buying the tickets is just too expensive for many.
And of course there were empty seats visible at London 2012 too, which annoyed everyone — especially when we discovered that many, many seats went to corporate sponsors, who then just didn’t bother to use them. But then, everything was shown as sold out on the ticketing site. Aparently in Rio that is not the case.
Oh well, you get a better view on the telly, anyway.
Proposed New Cycling Race for the Olympics: the "Commuter Race"
This is something that I wrote some notes on around the London 2012 Olympics, and just sitting here watching the Men’s Road Race on day 1 of Rio 2016, I thought I’d dig it out and finally post it.
Competitors have to ride stock bikes — no fancy superlight frames or custom wheels; just ordinary commuter-type bikes. They can be set up for the individual, but they must have mudguards and lights and EITHER a rack and one pannier OR the competitor must carry a backpack or messenger bag; the bag to hold a weight equivalent to (say) a laptop and a change of clothes.
The race to be a typical commute distances (say 5 miles?) carried out over normal commuting streets, during rush hour, with normal traffic.
Competitors get disqualified for jumping red lights or going the wrong way down a one-way street; and receive time penalties for going on the pavement (maybe disqualification there too, actually). They may receive a time bonus (or at least clock-stoppage) for unreasonable delays, as for example when an articulated lorry is reversing across the road and holding everybody up.
To be run as time trials with say a one-minute separation, so competitors should not be directly racing against each other.
An alternative version would have them use bikes from the city’s bike-hire scheme. They’d have to turn up at a designated pickup point, wait if a bike wasn’t available, and so on. This has the added advantage that it forces host cities to have or introduce such a scheme, and to keep the bikes well maintained.
It’s challenge that normal people — ones who commute by bike, at least — could really identify with.
Smith & Jones
The “other” Labour leadership candidate, as you might say, is called Owen Smith. There is a Guardian and New Statesman columnist and noted left-wing writer called Owen Jones.
It’s easy to confuse them; I saw this article (which is actually from almost exactly a year ago, and is about the first leadership election, but never mind) today and was confused, because it seemed strange that Jeremy Corbyn’s opponent would be writing a piece warning of the attacks that will come if Corbyn wins.
Then I realised that the byline was Jones, not Smith.
All I can say is that Kid Curry & Hannibal Heyes, and Mel & Griff Rhys — and indeed, The Doctor & Martha — have a lot to answer for.
Jerry Doyle Dead
Jerry Doyle — best known for his role on Babylon 5 — died Wednesday.
Some Thoughts On Software Development
Before the job interview that I mentioned the other day, the company asked me to answer some questions in writing. I didn’t get the job, but I was pleased with my written answers (and they presumably helped me to get the interview, at least). So I thought I’d reuse them as a blog post. None of this should be surprising for anyone who knows anything about the software development field, but it’s interesting to reflect on how things have changed across my career.
What are some of the fundamental changes in your approach to software development you have adopted in the last few years?
There are two main changes that are fundamental and independent of languages and deployment environments: agile techniques and test-driven development (TDD).
Agile
Moving from waterfall to agile development was probably the most significant change to development practices in the industry. We always knew that breaking work down into smaller units led to better estimating, more modular code, and just better software. The genius of agile was to extend that understanding to the period of time spent on a block of work. A two-week sprint, with its work being specifically estimated, planned and developed, is just infinitely more manageable than a project phase lasting months.
Add to that:
- self-organising teams which include someone from the customer or end user — or at least someone whose role is to represent the user;
- accepting that change will happen, and embracing it;
- and the discipline of saying that some features won’t be developed;
and we have a recipe for success.
TDD
Good developers always understood that testing was essential, and did it. But they used to follow a written test plan, or just have an idea of what needed to be tested and work to that. Testing was manual, hard to repeat, and error-prone.
TDD brought automation. So instead of writing a document listing the required tests, we can write code. That inherently makes the tests rerunnable, so regressions get caught before they become a problem.
But almost more important than that is the idea of writing the tests first. In an ideal world you write a comprehensive set of tests, write functional code until all the tests pass, and you’re done. It may not always work out exactly like that — in particular, adding tests to a mature codebase can be problematic — but writing tests first encourages us to write code that is easy to test, which tends to lead to better-designed, more modular code.
An added bonus is that the tests can help to document the code, by showing our expectations. And of course they make refactoring easy and safe, as long as they are in place before you start.
If you were to start your last project over again, what would you do differently?
The project I’m thinking of involved rewriting the product’s GUI into a modern, responsive, browser-independent form, using HTML 5 and Twitter Bootstrap.
The existing version was an old frames-based web app that only worked fully in Internet Explorer, and had to be tweaked when each new version of that browser came out. We had long wanted to modernise it, but there were always other demands on development time.
Eventually I got a chance to try a proof of concept for the change. The application uses JSPs and Struts action classes, and the brief was to continue using these as much as possible. I decided to start with one of the main display pages, the one that users spend most of their time in. The idea was to give a quick demonstration of what was possible; and it did, to a point. But what I hadn’t realised was that frames are not part of HTML 5. There are ways to keep using them, but it’s not easy, and not good practice.
So while the new look and feel of a single page was clear, it was far from clear how the various pages would interact, how they would be brought together to form the whole UI, without frames.
If I were to start the project again now, my first step would be to work out how to link the pages together into a single interface, in the absence of frames. Most likely I would use one or other of the forms of JSP includes.
However, if there was the budget to do a more complete rewrite — by which I mean one that did not necessarily seek to use the existing JSPs — I would probably make much greater use of JavaScript and Ajax, and use the action classes just to provide data to the Ajax calls.
What is your approach to testing, and how would you test your application?
I would use a mixture of automated unit testing using JUnit, automated GUI testing, and actual user testing, if at all possible.
This fits well with what I was saying above. There are, broadly, three levels of testing: unit, integration, and system. Though writing automated unit tests is a development activity, rather than a testing one. Certainly we wouldn’t expect dedicated QA testers to work at the unit-test level.
So let’s assume that we have satisfactory unit-test coverage and we are interested in testing the application as a whole. Automation is obviously key here, as well, both because it allows us to easily repeat the tests regularly — for every checkin, in an ideal world (and see below); and because it removes the need for testers to manually step through a written script, which is boring and error-prone.
I have used Selenium for automated GUI testing, with some success. It takes a significant amount of development work, because it’s doing a significant thing, but the effort should pay off.
However, even after all that, there is still no alternative to having someone sit down and actually use the application. Automated testing might pick up outright errors in how the user interaction works. But it won’t catch fine details like misaligned elements, typos in onscreen text, or just generally how it feels to use the application.
What are the benefits of Continuous Integration?
Continuous Integration takes us beyond the traditional daily build. It does more than just building, and does it more frequently than just daily.
At the simplest level it ensures that, for every commit, an incremental build of the complete product is made, and all the unit tests are run. In the most advanced case, as well as building and testing, the product can be deployed to test servers and integration tests such as the automated GUI tests mentioned above can be run. Realistically those tend to take longer, so it’s unlikely that you would do them for every commit, but they can certainly be run multiple times daily.
So we get the following benefits:
- frequent builds catch problems in code integration;
- unit tests are run frequently, catching any regressions;
- integration tests are run regularly, catching other problems;
- general confidence in the product is increased;
- developers are happy to commit changes frequently.




