Archive for the 'reviews' Category

Book review: Prophet’s Song by Paul Lynch

I mostly enjoyed this Booker-winning novel about a family in Ireland suffering under an increasingly authoritarian government, as the country swiftly descends into civil war. The politics aren’t fleshed out; it’s about the psychological effects of civil war and being a minority (in this case, the husband is a “disappeared” Trade Union leader). It’s very much a book of our time; this isn’t set in the “day after tomorrow”; it’s today. Apart from the street names and the Irish-accented dialogue, it could be set in Damascus or Darfur.

But what put me off what the author’s stylistic decision to avoid paragraphs or quotation marks. Much of the book was two pages of solid text, justified left and right so it was not at all easy on the eye. Here’s a photo of a random but representative spread:

A photo of a two pages from the  book

The lack of speech marks meant that often I couldn’t tell when one person’s reported speech ended and another participant in a conversation began, or when narration recommenced. For example, from the randomly chosen spread from the photo:

Carole looks up as the waitress steps towards them with a tray and places the drinks on the table then smiles and steps quickly away. You look as though you haven’t slept in a week, Eilish says, are you sleeping at all? Sleep, Carole says, her voice distant, far off in time, she looks across the table at Eilish without seeing her. I don’t sleep much at all, she says

(There were more egregious examples, but I left the book in my hotel room when I finished my holiday, as I knew I wouldn’t want to re-read it.)

The effect of this is that I would lose the thread and have to re-read to parse and make sense of the dialogue, and the monolithic slab of text made it difficult to find the place to re-read from. This was annoying, and got in the way of the excitement of the story.

I think this would be a great film or Netflix mini-series. Unfortunately, Lynch’s too-cool-for-punctuation prose got in the way of the narrative.

The indisputably correct list of the ten best albums ever

Here is the indisputably correct list of the best ten (non-compilation/ Greatest Hits) albums ever, in no particular order.

  • "Never Mind The Bollocks Here’s The Sex Pistols"

    The lurid, ransom note logo and album cover by Jamie Ried (cf my own at the top of this page). The sheer fucking excitement of the opening of "God Save The Queen" or "Pretty Vacant" makes this a fantastic album. The opening of "Bodies" still sends a shiver up my spine.

  • Blue – Joni Mitchell

    Mitchell’s guitar, dulcimer, piano playing is perfect. But it’s the songs that make it: the heart-on-her-sleeve lyrics, the melodies with their key changes. Sublime. Maaaan.

  • dubnobasswithmyheadman – Underworld

    Electronica with real vocals. Dada-esque cut-up lyrics. Dance songs and chill-out songs. I have vivid memories of getting stoned and travelling through the skyscrapers of Bangkok in the back of a taxi listening to this.

  • Loveless – My Bloody Valentine

    What on earth is wrong with this pressing? I asked myself on my 25th birthday as I played my brand new CD. Then every time I listened, I heard new sounds amongst the feedback and gently melodic crooning.

  • Dark Side of the Moon – Pink Floyd

    Nothing to be said that hasn’t already been said. Wonderful, even if it is hippie/ rock shit.

  • "London Calling" – The Clash

    I’ll never forget buying this double album in 1979 for £3.50 (the same price as a single album) and the first time I played it. It was the first time I’d heard political music. It was my first exposure to reggae; I know it was from white boys, but until then I’d only heard sanitised pop reggae. The Clash just melted down loads of influences into something amazing. The cover is great – and the Elvis reference is genius.

  • The Velvet Underground and Nico – The Velvet Underground

    Nothing to be said that hasn’t already been said.

  • Revolver – The Beatles

    It’s got ballads, kids’ songs, psychedelia, string sections. It’s got it all. The latest reissue, remixed into real stereo by Giles Martin, has crystal-clear bass that wasn’t really possible in the 60s (too much bass would cause record player styluses to jump out of the groove) so you can hear McCartney’s genius, and also the non-album single from the same sessions: Paperback Writer and its even more marvellous B-side, Rain, with its backwards vocals, stunning harmonies and bass.

  • Dummy – Portishead

    No-one had ever heard music like this before. Shares in theramins went through the roof.

  • Blonde on Blonde – Bob Dylan

    It’s got loads of great tracks. And “Visions of Johanna”, which is His Bobness’ towering achievement.

  • Bonus runner-up: Wrong Way Up – Brian Eno And John Cale

    Two geniuses, legendary pioneers of experimental music get together, combining loads of different and unusual instruments and cut-up loops. Instead of some unlistenable avant-garde weirdness, they produce an album of slightly off-kilter pop songs full of melodies and harmony. It initially sounds catchy but slight, and as you listen more, new depths are revealed. The album’s title comes from its song “Empty Frame,” a sea shanty about a cursed ship going around in circles, never returning to port. A lost classic.

Review: Evinced accessibility site scanner

That nice Marcy Sutton asked me to test and give feedback about a new product she’s involved with called Evinced, which describes itself as an “Enterprise grade digital accessibility platform for modern software development teams”. Quite what “enterprise grade” means is beyond me, but it’s basically software that can crawl a website from a root domain and check its code against some rules and report back. There are similar tools on the market, and I’ve recently been working with a Client to integrate Tenon into their workflow, so wanted to compare them.

“Now hang on!”, I hear you say. “automated tools are terrible!”. Well, yes and no. Certainly, overlays etc that claim to automatically fix the problems are terrible, but tools that help you identify potential problems can be very useful.

It’s also true that automated tools can’t spot every single accessibility error; they can tell you if an image is missing alternate text, but not that <img src=dog.png alt=”a cat”> has useless alt text. Only a human can find all the errors.

However, many errors are machine-findable. The most-common errors on WebAIM’s survey of the top million homepages are low contrast text, missing alternative text, empty links, missing form input labels, empty buttons and missing document language, all of which were found by running automated tests on them (which, presumably, the developers never did before they were pushed to production).

I personally feel that a good automated scanner is a worthwhile investment for any large site to catch the “lowest hanging fruit”. While some things can’t be automatically tested, other things can, and other aspects live in a grey area depending on the rigour of the test.

For example, a naive colour contrast test might compare CSS color with background-color, and give a pass or fail; a less naive test will factor in any CSS opacity set on the text and ignore off-screen/ hidden text. A sophisticated contrast test could take a screenshot of text over an image or gradient and do a pixel-by-pixel analysis. To do a test on a screenshot would require actually rendering a page. Like Tenon, Evinced doesn’t just scan the HTML, but renders the pages in a headless browser, which allows the DOM to be tested (although I don’t believe it tests colour contrast in this way).

Evinced uses Axe Core, and open-source library also used by Google Lighthouse. It also contains other (presumably proprietary secret-source) tests so that “if interactable components are built with divs, spans, or images – Evinced will detect if they are broken”.

Reporting

The proof of the pudding with automated site scanners is how well they report errors they’ve found. It’s all very well reporting umpty-squllion errors, but if it’s not reported in any actionable way, it’s not helpful.

Like all the automated scanners I’ve tried, errors are grouped according to severity. However, if those categories correspond with WCAG A, AA and AAA violations, that’s not made clear anywhere.

Graph showing number of errors by type

It’s a fact of corporate life that most organisations will attempt to claim AA compliance, so need to know the errors by WCAG compliance.

One innovative and useful reporting method is by what Evinced calls component grouping: “Consolidates hundreds of issues to a handful of broken code components”.

With other scanners, it takes a trained eye to look through thousands of site-wide errors and realise that a good percentage of them are because of one dodgy piece of code that is repeated on every page. Evinced analyses pages and identifies these repeated components for you, so you know where to concentrate your efforts to get gross numbers down. (We all know that in the corporate world, a quick fix that reduces 10,000 errors to 5,000 errors buys you time to concentrate on the really gnarly remaining problems.)

graph showing 32% of all issues are grouped into 38 components; 1 component accounts for 81% of critical issues

There’s a vague suggestion that this grouping is done by Artificial Intelligence/ Machine Learning. The algorithm obviously has quite clever rules, and shows me a screenshot of areas on my pages it has identified as components. It’s unclear whether this is real Machine Learning, eg whether it will improve as its corpus of naughty pages gets larger.

list of components automatically identified on my site with screenshots and the relevant areas highlighted

I don’t recall signing anything to allow my data to be used to improve the corpus; perhaps a discount for not-for-profits/ time-limited demos could be offered to organisations allowing their data to be added to the training data, if indeed that’s how it “learns”.

User Interface

Many of these site scanners are made by engineers for engineers and have the similar high levels of UX one would expect from JavaScripters.

Tenon has some clunkers in its web interface (for example, it’s hard to re-run a previously defined scan) because it’s most commonly accessed via its API rather than web back-end.

Evinced makes it easy to re-run a scan from the web interface, and also promises an API (pricing is not announced yet) but also suffers from its UI. For example, one of my pet peeves is pages telling me I have errors but not letting me easily click to see them, requiring me to hunt. The only link in this error page, for example, goes to the “knowledge base” that describes the generic error, but not to a list of scanned pages containing the error.

Page showing how many errors I have but not linking to them

(After I gave feedback to the developers, they told me the info is there if you go to the components view. But that requires me to learn and remember that. Don’t make me think!)

There’s also terminology oddities. When setting up a new site for testing, the web interface requires a seed URL and to press a button marked “start mapping”, after which the term “mapping” is no longer used, and I’m told the system is “crawling”. Once the crawl was complete, I couldn’t see any results. It took a while for me to realise that “crawling” and “mapping” are the same thing (getting a list of candidate URLs) and after the mapping/ crawling stage, I need to then do a “scan”.

A major flaw is the ability to customise tests. In Tenon I can turn off tests on an adhoc basis if, for example, one particular test is giving me false positives, or I only want to test for level A failures. This is unavailable in Evinced’s web interface.

Another important but often-overlooked UI aspect of these “Enterprise” site scanners is the need to share results across the enterprise. While it’s common to sell “per-seat” licenses, it’s also necessary for the licensee to able to share information with managers, bean-counters, legal eagles and the like. Downloading a CSV doesn’t really help; it’s much more useful to be able to share a link to the results of a run and let the recipient investigate the reports and issues, but not let them change any configuration or kick off any new scans. This is missing in both Evinced and Tenon.

Conclusion

The system is currently in Beta and definitely needs some proper usability testing with real target users and UI love. One niggle is the inaccuracy of its knowledge base (linked from the error reports). For example, about the footer element, Evinced says

Since the <footer> element includes information about the entire document, it should be at the document level (e.g., it should not be a child element of another landmark element). There should be no more than one ><footer> element on the same document

This is directly contradicted by the HTML specification, which says

The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element Here is a page with two footers, one at the top and one at the bottom Here is an example which shows the footer element being used both for a site-wide footer and for a section footer.

I saw no evidence of this incorrect assumption about the footer element in the tests, however.

All in all, the ability of Evinced to identify repeated ‘components’ and understand the intended use of some splodge of JavaScriptted labyrinth of divs is a welcome feature and its main selling point. It’s definitely one to watch when the UX is sleeker (presumably when it comes out of Beta).

Number Stations

A new song. It’s inspired by numbers stations, “a shortwave radio station characterized by broadcasts of formatted numbers, which are believed to be addressed to intelligence officers operating in foreign countries. Most identified stations use speech synthesis to vocalize numbers”. This got me thinking about clandestine communication and betrayal.

I heard chatter on the network.
But I couldn’t crack your code.
I was waiting defenceless
for your bombshells to explode.

If you’re here, there is a reason.
Your ciphers are all known.
To everything there is a season.
Now you’re here, your cover’s blown.

I don’t recall why we are enemies.
I don’t understand what we are fighting for.
I forgot my ideology,
half way across the bridge
in this cold, cold war.

You walked down to the checkpoint.
I saw graffiti on the wall.
You presented your false papers,
and the wall began to fall.

Words and music © Bruce Lawson 2020, all rights reserved.
Production and bass guitar: Shez of @silverlakemusic.

Review: Volpone, Royal Shakespeare Company

Volpone at RSC was very good last night. Sometimes the pacing was a little wobbly (mostly in the courtroom scenes), and Henry Goodman fluffed a line or two, but it was only the second performance. Goodman’s big set piece – Volpone pretending to be an Italian snakeoil peddlar – was hilarious (and he accused me of being a Norwegian from the stage in an audience participation section).

It’s a Ben Jonson play, so all of the characters are ciphers (and named according to type: Volpone the fox, Sir Politic Would-be, Corvino the crow etc) so don’t expect deep psychology, but more the Jonson parade of fools, monsters and freaks. The drawf, hermaphrodite and eunuch were excellent, and Trevor Nunn’s direction setting it in the Facebook and selfie era was inspired.

Review: JavaScript & JQuery by Jon Duckett

Disclosure stuff: I was sent a free copy of this by the publishers. From 2000-2002 I worked with its author. I currently work with Mathias Bynens, the book’s technical reviewer (but didn’t know this until after reading it).

Don’t tell anyone, but I’m not very confident with my JavaScript – I learned to program in COBOL, FORTRAN, BASIC, 6502, Z80 and DCL which are all procedural, so I was looking forwards to a book that starts at the very beginning and treats me kindly, before clubbing me over the head because I polluted the global namespace and laughing at me for extending my prototypical object literal constructors into my callbacks.

The book’s blurb says “We’ll not only show you how to read and write JavaScript, but we’ll also teach you the basics of computer programming in a simple, visual way” and is the follow-up to Duckett’s hugely successful HTML and CSS Book which sold over 150,000 copies. (In tech book terms, that’s practically Harry Potter; in this industry, 5,000 is a successful book.)

The book looks beautiful. High quality paper, colour images, with real care and attention lavished on the layout and the words. I’m no quivering aethete designer, but I found it pleasurable to read even though it’s a weighty 600 page tome. Each page (or spread) is its own discrete infolump so it’s easy to out down and come back to.

It starts light – defining events, objects, methods and properties, showing the relationship between HTML, CSS and JS, and with a section on Progressive Enhancement (hoorah). However, I was slightly peturbed that the first worked example uses document.write. I can see why you’d do this – it allows you to show something, but without having to muck about appending to the DOM or using getElementById and innerHTML but it didn’t feel particularly good practice (especially as getElementById and innerHTML are introduced soon after, anyway.) In the author’s defence, he does note that this is Considered Naughty.

Elsewhere, we see lots of workarounds and IE-specific aspects of the DOM. I’m comfortable with these being there; we have to live in the real world, and I think that a book that ignores this does a disservice to its readers – it’s right to equip someone to make pages work on IE.wtf or understand what’s happening in older/ inherited scripts.

The book moves briskly after the traditional introduction to loops, variables and other syntax. By page 270 we’re looking at event listeners, including IE5-8, event delegation, mutation events (with a note that mutation observers are coming, but no more than that.)

Chapter 7 begins with jQuery. Again, there are times when jQuery is entirely appropriate. What’s good is that this book teaches JS concepts first, and always keeps the two separate. (I get tired of “JS” tutorials that are actually about jQuery.)

The rest of the book romps through “HTML5” APIs, JSON, common UI widgets and – usefully – debugging. Attention is paid to pointing out what’s standard and what isn’t, what’s vanilla JS and what isn’t. Progressive enhancement, accessibility and separation of concerns is are kept in mind throughout. This is good. You can see the table of contents.

When I’m reading, I often don’t care if I’m reading a paper book or a Kindle. But in this case, I was glad I was reading the full-colour, attractive book. I’ve railed about the shoddy quality and general unattractiveness of most computer books before. When so much information is available on the web, publishers must provide some sort of extra value. This book has it – the information is thought-through, beautifully presented and clearly explained. While I guess that the majority of my regular readers won’t need an explanation of what a loop or variable is, I believe this would be an excellent book for someone wanting to start with JavaScript, and learn it well. It doesn’t cover Promises, Mutation Observers, but I don’t really think they’re right for a beginners’ book, anyway.

Oh – and it made me realise that I’m not nearly as crap at JavaScript as I thought I was. Which is nice.

Review: Two Gentlemen of Verona, RSC

It’s easy to seriously muck up a production of one of Shakespeare’s great plays, but exceptionally hard to pull off a good production of a relatively weak play like Two Gentlemen of Verona. I enjoy seeing one of the lesser plays produced, as it’s fascinating to see what a really good director and cast can do with unpromising source material.

One thing you can do is have lots of music and spectacle and there are a few musical interludes in this new production. The extended opening is a joy; the ensemble cast re-creates a busy restaurant in Verona, with live music and without dialogue but with lots of audience interaction. It’s great fun. It’s contrasted with the sophistication of the Milanese court later, in a fabulous interlude involving a cabaret singer/ exotic dancer and bizarre Tudorbethan disco dancing.

The production doesn’t try to overwhelm with spectacle, however. In fact, occasionally it lacks pace. This may because I watched it on the third night of its run, so the actors need to get into their stride. But it may be the quality of the text. One of the reasons that the play is weak is that Shakespeare was still learning his craft (many scholars believe this to be his first play) so there are long speeches that are undramatic wordplay. Perhaps they were funny in the sixteenth century but they aren’t now, so I found myself thinking that if I’d directed the play, I’d have been ruthless with my red pencil and removed some of those speeches. (It’s an advantage of one of the minor plays that you can excise stuff without offending too many purists.)

Something else that doesn’t work so well these days are the plays dodgy sex and racial politics. When Proteus falls in love with Sylvia and out of love with Julia he says “And Silvia witness Heaven, that made her fair! / Shows Julia but a swarthy Ethiope. / I will forget that Julia is alive”. However, it’s foolish to expect a sixteenth century play to conform to modern standards.

I thoroughly enjoyed the production, especially the performances by Pearl Chanda (Julia), Nicholas Gerard-Martin (Thurio), whose serenade scene was very funny, and Michael Marcus (Valentine). Honourable mentions, too, for Sarah MacRae (Silvia) and Martin Bassindale (Speed). The outlaws were also amusing. It’s also beautifully staged, with enough physicality and dark moments to carry the preposterousness of the plot – no twins or shipwrecks, but we do get a woman dressed as a man and instantaneous reversals of character.

An excellent RSC directorial debut from Simon Godwin. One small niggle: the first half was very long – almost two hours by my watch.

Apps For All: Coding Accessible Web Applications – book review

(I was sent a free ebook of this title. That hasn’t influenced my review. This ebook is published by Smashing Magazine and costs €10.95. There’s a sample chapter available. I have no financial connection with the publisher or author.)

When I read about this book I was excited to read it. I don’t need Yet Another Accessibility Book (I co-wrote one a long time ago) but wanted something that delves deeply into WAI-ARIA and how it interacts with HTML5 and assistive technologies. As this book’s blurb says “the underlying theme of this book is about making the interactivity of web applications include keyboard and screen reader users”, it seemed like the book for me. It’s also tech-reviewed by Steve Faulkner who’s my go-to Bogan for practical accessibility information, so I was pretty sure I could trust it.

WAI-ARIA is one of the vital specifications for making the web accessible. There are three problems with using it, though: firstly, the spec is hard to read and understand, even in the context of specs’ inherent indigestibility; secondly, it’s hard to understand how its concepts intertwine with other specs like HTML and, thirdly, most developers don’t use assistive technologies so are unable to understand or test the output of their ARIA pages.

Therefore, I greatly appreciated that author Heydon Pickering is a developer, so keeps the book practical. ARIA is used, in conjunction with markup and script in situations that you’d really encounter. The problem to be solved is elucidated, and the output is clearly explained. It goes deep, too; I learned a great deal and plan to re-read it soon.

It’s a short book (but quite dense) and Heydon’s prose style is clear and occasionally humorous. But don’t let that fool you; this is an important book because it’s the only one that thoroughly explains the technical merits and use of ARIA (and doesn’t browbeat the reader about accessibility).

Without hyperbole: every developer should read this book, and put its techniques into practice. Now.

David Tennant’s Richard II (RSC)

We went to see David Tennant as Richard II in the Royal Shakespeare Company’s eponymous production last night. As a production it was all you’d want from RSC – great actors, impeccably staged. But I can’t get over the feeling that actually, it’s just not a very good play (or it simply hasn’t aged well).

It’s a reasonably early Shakespeare play, almost all in iambic pentameter with very little prose, and a great deal of rhyming couplets (later plays close scenes with a rhyme, but don’t use it throughout). This made a lot of it sound like a Hallmark greeting card poem as the rhyme and rhythm are quite regular.

There’s also a howling clunker of plot, in which one character simply forgets to tell another of the death of the previous King’s widow:

[Servant:] My Lord, I had forgot
To tell your Lordship, to day I came by, and call’d there,
But I shall grieve you to report the rest
[York:] What is’t knave?
[Servant:] An hour before I came, the Duchess died.

I almost laughed out loud at this.

Another problem is that Richard II is a thoroughly unlikeable character. Perhaps it’s a failure of Tennant’s acting or Greg Doran’s direction (but I doubt it; they’re both highly professional) but Richard simply has no redeeming features, so you I didn’t care what happens to him. He’s vain, messianic and treats his nobles badly. He deserves to lose the throne. At least with Richard III, you enjoy his evilness; Richard II just seems rather wet.

Taffy at The Black Heart, Camden

Last week, I was lucky enough to spend a couple of hours upstairs in a sweaty windowless room above a pub in Camden on a scorching summer’s evening.

The reason I subjected myself to this misery was to see a Japanese punky-pop-shoegaze band called Taffy play. Taffy are a bit like The Primitives, with chainsaw guitar and great pop melodies but also sport a shoegazey-disorted lead guitar and sweet vocals from a singer called Iris. Their drummer, an ever-smiling bespectacled chap who reminds me of Penfold from Dangermouse, plays like two drummers together. They might not be ground-breaking, but they do make a great, summery sound. They’re much too cheerful to be real shoegaze, and they’re better musicians and singers than Shonen Knife, with none of their studied wackiness.

Best thing to do is listen. Here’s their latest single “Tumbling” (but the best tracks from their new Lixiviate album, Sweet Violet and Train aren’t singles):

After paying my6 to get in, who should I bump into but drummer Ken at the bar. As my 14 year old daughter is in love with him (“he’s so adorable”, apparently) she demanded by text that I have a photo taken with him.

ken

The photo was taken by the guitarist. They both signed my CD cover. Note that Ken’s autograph is a smiling anthropomorphised drum kit. (“It’s so adorable!” squealed my daughter.) I didn’t know what Iris or the bassist looked like to get their signatures, so lost my chance at a rare collectible there.

cover

The band went on, and they were great. The sound was terrible, naturally: pub gigs never have a decent PA, the drummer plays loud to fill the room, the guitars turn up loud so they can hear themselves, and vocals are lost in the mix. Iris has a tuneful, engaging voice, but it’s quite high and not powerful. But they were brilliantly tight, and obviously loved playing. The bassist grooved around until his shirt was wringing wet, Ken flailed around on his drums, cleaning sweat off his specs between songs and never letting his smile falter. The guitarist even played an intro by hitting the strings with a glow stick.

As a band, they’ll either disappear or get really big and you’ll all be jealous of my seeing them in a room of 40 people in Camden. I think their tour finished tonight, but I heartily recommend their album.

Taffy band