Reading List

The Lucies, live, 1991

When I was clearing my dad’s house I found the VHS tape on which there was the only video of my band doing a gig. I don’t know who took the video, but here are five songs recorded in a tent at a festival in the West Midlands in 1991. The band are me (rhythm guitar, vocals), Tony Sherrard (bass), Andrew Cope (drums) and Nick Sherrard (lead guitar). We were called “The Lucies”. Here we are as a three-piece before Nick joined, with some hanger-on called John Peel.

3 young men in horrible shirts with John Peel

This song is one I wrote called “Silka, Wearing Fancy Dress” in Summer ’91. There’s a studio demo with variant lyrics available. Words, music © Bruce Lawson.

Silka walks in those evenings When you feel like you’re still a virgin.
You don’t trust your feelings, Silka’s certain she’s hurting.
She is dressed in lace when she says, “Yes, yes, I will; of course I will, yes” -
But if you feel the need to believe her,
remember – Silka’s in fancy dress.

Silka in black satin, like the Mona Lisa if she were in mourning.
You try to please her, then with no warning
There’s a pause for the sinful applause and your unsatisfying taste of success
and the knowledge of the flaws that you hate, then through the door
comes Silka in fancy dress.

Bejewelled in a shattered promise, she’s wearing fading fraying denim.
You’re pierced by inverted commas
that have appeared round the tales she’s been telling you for so long.
She’ll decree: “Everybody loves me”, but it’s too late for you’ve already guessed
Underneath there’s nothing that’s real to see; Silka’s only fancy dress.
Really, she’s merely fancy dress.
She’s very nearly Silka, wearing fancy dress.

Keep your mind and your eyes closed;
Silka’s wearing borrowed clothes
and all her cheap and gaudy trinkets.
Silka said she’s gonna crash; listen. Sing it.

Let no-one say The Lucies couldn’t rock out. However, accusations of leaving heavier songs open to extemporised guitar noodling and never properly rehearsing how to end them will be met with hands in pockets, eyes averted and shuffling of feet. “Dancing (Across a backdrop of Stars)” is a moronic heavy riff I wrote, with some vaguely psychedelic words I wrote after bring mightily impressed by a performance by the London Contemporary Dance Theatre. Words, music © Bruce Lawson

“Don’t Bring Me Down” is a storming bassline and tune by Shez, with some blahblah words from me about not harshing my mellow because “I’m lost, don’t wanna be found again” and “floating in colours and sound again” etc. It’s for this reason we were called “The Hallucinogenic Freedom League” (later abbreviated to “The Lucies” because no-one could ever spell the full name). There’s a studio demo available. Words, © Bruce Lawson, Music © Tony Sherrard.

This song – called “The Missionary’s Position” – is proof that a short satisfying riff repeated ad infinitum with jazz chords (F9 – E9- D7- A7, woo!), funk bass, wiggly wiggly heavy rock lead and a bluesy middle break doesn’t add up to a good song. Note Paul, the roadie/ soundman putting his spare wheel in front of the bass drum, as Andy played so hard his drum was moving away from him. Words, music © Bruce Lawson.

This last one is a ballad called “Sweet Sadie Sings”. It’s one of my favourite songs I wrote for The Lucies because (1) it has a nifty G add9 chord, (2) it has a shouldn’t-work-but-does F#m to F change and (3) because I remember who the real “Sadie” is. But what’s in a name if the name’s been changed?

Live, it suffers a bit from lack of variation – the studio demo has a sexy extra guitar line by Shez, the bassist. This performance got me dangerously close to being blacklisted by the Tortured Artists and Singer-Songwriters Association as I visibly, and publicly, smiled while singing it. Words, music © Bruce Lawson

Sadie sings sweetly
about all of the things she’s done
and says, “They can’t be classified neatly
into those I’ve lost and those I’ve won.
For experience gained
My innocence has been shamed.
until only empty words remain.”
Sweet Sadie sings.

Sadie sings softly
of the last twenty-seven times she’s been in love
and says “If you would only get off me
I could transcend this wrecked room and rise above
My stupid hopes and my facile fears
My futile dreams and my fatuous fears.
I never claimed that I was proud of these last three years.”
Sweet Sadie sings.

Sadie is grieving
for the dreams she’s nurtured and then denied.
She said, “One November evening
I took them out and I laid them bare and there they died.
I know that I am far too small
to contemplate ever achieving them all,
so on the way some of them fall.”
Sweet Sadie sings.

Sadie sings sadly
conscious of her words’ ambiguities.
She says “Who’s to say I’ve done so badly
when all I’ve ever really done is try to please?
For experience gained
My sense of wonder has waned.
What’s in a name when the name’s been changed?”
Sweet Sadie sings

Reading List

Notes on draft CSS “alt” property

A while ago, there was discussion in CSS Working Group about an alt property to be added to CSS. Its purpose is to let assistive technology know the meaning of unicode characters inserted into a visual rendering of a document with CSS generated content. The problem is described by James Craig, Apple’s nice accessibility chappie.

It’s been shipping as -webkit-alt for a year now, and has just been added to the draft CSS Pseudo-Elements Module Level 4 spec. Let’s say you’re using a star glyph to show something is “new”, by generating CSS content using a class of .new as your selector:

.new::before { 
  content: url(./img/star.png);
  alt: "New!"; 
}

The alt gives information to assistive technology.

The alt string can be blank. Assume you’re generating “►” to show that a widget is expandable. Because you’re a lovely human being and a responsible developer, you’re using aria-expanded="false" in the HTML. Therefore, you’d use empty alt in the CSS that generates the glyph to prevent assistive technology “helpfully” reading out “Black right-pointing pointer” after the AT has relayed the ARIA information to the user:

.expandable::before {
  content: "\25BA"; /* a.k.a. ► */
  alt: ""; 
  /* aria-expanded="false" already in DOM, 
     so this pseudo-element is decorative */
}

Update 17:05 GMT fantasai of the CSS WG has mailed the CSS Working Group protesting against the syntax above. I don’t have any horse in the syntax race; my aim with this post is to show that we need some mechanism to give alternate content to assistive technology given that we allow non-textual content to be generated via CSS.

When I tweeted about this earlier, a few people objected to the concept because it adds content to CSS. But that ship has long sailed, with the content property that people have been using for ages. If you say “adding non-decorative content to a page is a misuse of CSS that merits the author 100,000 years in purgatory with Tim Berners-Mephistopholee pouring hot Ovaltine over their dingle-dangles whenever they try to sleep”, I will vehemently nod my agreement.

But sometimes, for organisational reasons, or because you inherited code, or you’re refactoring code from before you saw the light, you’re working with CSS that generates icons. This new property at least allows an author to make that content more accessible.

Years ago, I joined a web team a week after their brand new website had been delivered, months late and squillions over budget, by Big London Agency PLC. The site was a vile splodge of nested layout table cells and spacer GIFs with “click here” links pointing to PDFs. Of course, I could have instantly resigned my job and let the bank repossess my house.

Instead, I gently pointed out to any who would listen the inadequacies of the site and made plans about how it could be refactored. But while biding my time, I was also making small tweaks here and there to make it better and incrementally more accessible; removing duplicate link text from title attributes, changing “click here”s, putting blank alt text on spacer GIFs in the small parts of the template I controlled.

This was before the days of ARIA but I would have jumped at the chance of adding role="button" to the horrible mess of nested <div>s that the CMS spat out. Yes, it’s much better to spend a fortune getting the external CMS provider in to change the templates, the retest every single form on every single browser – but that simply wasn’t possible.

Two years later, when the senior manager who commissioned the terrible site left and we could jettison it, we did. And then we did it right. But for those who needed the content and were unable to wait nearly three years (that is, everyone), I’m glad I applied sticking plasters and polished turds.

It’s often said that if a job’s worth doing, it’s worth doing well. But it’s also wise to remember: sometimes, if a job’s worth doing, it’s worth doing badly than not at all. If you must have meaningful content generated by CSS, at least now you can make it accessible.

Speed of Light

I found this lurking as sol.wav on a hard drive while doing a computer backup on Friday.

One weekend in summer ’91 or ’92, a group of us were at my flat tripping on LSD from Friday night until Sunday lunchtime. (Mum, kids: it was an accident; a naughty Dutch man in the park told us they were cough sweets.)

At some point during the fun, I got a tune in my head and decided to write a song about tripping, while tripping. I tried subsequently to record it with real drums in a studio, but it didn’t work, so it languished as a cassette of me woozily singing it with acoustic guitar until 2004 when my friend Shez showed me how to use some sequencing software on his computer and helped me program this.

I note in passing that none of us coughed during that weekend. And, if you think about it, the whole world really *is* circles and lines.

Boys and girls come out to play,
The moon doth shine as bright as day
And it would be so good
If you only say you would
I’m travelling at the speed of light
Everything’s all right

In the cold white wintertime
The whole world is just circles and lines
And your eyes burn
When we feel the seasons turn
I’m travelling at the speed of light
Everything’s all right

Dewy dawn in early May
Emily comes out to play
she is gathering flowers
by the ruined prison towers
I’m travelling at the speed of light
Everything’s all right

midnight when the moon is full
we can’t resist that mad lunar pull
we wax and wane
fucking in the summer rain
I’m travelling at the speed of light
Everything’s all right

In the Autumn if you just call
You can make the cold stars fall
into the warm wet sea
Like dead leaves beneath bare trees
I’m travelling at the speed of light
Everything’s all right

Boys and girls come out to play
The moon doth shine as bright as day
And it would be so good
If you only say you would
I’m travelling at the speed of light
Everything’s all right

Word and music © bruce lawson

A quick tip for understanding CSS Flexbox

Quite a few people have difficulty understanding the CSS Flexible Box Model, especially the flex-shrink property. Even brainboxes like Remington Sharp find it tricky:

As a quick tip, I find a helpful way of coming to grips with it is by likening Flexbox to String Theory. Thus, flex-basis is analogous to a Calabi–Yau manifold or similar higher-dimensional analogues of K3 surfaces, and think of flex-shrink as behaving like the 7 compactified dimensions propagating from one point to another by summing probability amplitudes.

Hope this helps.

Reading List

Thursday meh: disruption-worship

(Being part of an occasional series in which I grumpily fulminate against something that’s annoyed me.)

I’m fed up with tech-neocon wankery about “disrupting” industries.

You turned the public into taxi drivers? You simplify the process by which millionaires find a San Francisco parking space? Your iPhone app makes it easy to swipe a face away if you don’t want to fuck its owner? Woo, have a fucking Nobel Prize, Mr Disruptor.

In return for your clever oh-so-useful tech, you perpetuate a culture of all-nighters, working for stock, a lads-only pseudo-meritocracy. You whimper about government regulation that exists to protect consumers and workers. You claim a right derived straight from God (or Adam Smith, at least) to do what you want, when you want, to whom you want and you justify this by saying you’re shaking up (“disrupting”) inefficiencies. So noble! Reforming economics while relentlessly focussed on selling your company to a tech giant so you can repeat the process and enrich yourself.

Disrupt your own grasping, me-first mindset. And then show me your tech.

On HTML5 vs Living Standard, W3C vs WHATWG

That nice Stephen Shankland just published a news report HTML5 is done, but two groups still wrestle over Web’s future on CNET, quoting me a couple of times.

As I’m occasionally asked questions about how I see the two different organisations working together (or not), here are the full questions that Steve asked me, and my responses (as approved unchanged by my bosses at Opera). I’m grateful to Steve for giving me his permission to reproduce them.

SS: How big a problem is it that WHATWG and W3C both are sorta kinda in charge?

BL: It’s not an especially big problem for the vast majority of developers who aren’t developing sites using still-fluid features that are only available in the latest nightlies. Where they differ, the W3C spec is a better guide to the stable features as implemented already in browsers – for example, it has dropped the <hgroup> element, warns about the lack of implementations of the outlining algorithm and has much better advice on using the <main> element today to make websites more accessible to people with disabilities.

SS: Which do you think has more power in charting the future of the standard?

BL: Neither. The power is with browser makers. As Ian Hickson of WHATWG said, it doesn’t matter what the specs say if browsers don’t implement them.

SS: It seems kind of like we have two horses pulling the same cart, with no coordination between the horses. Is this a bad use of resources? Or is that a bad metaphor?

BL: The web is the biggest platform we’ve ever had. Therefore, it has more constituencies and competing interests than we’ve ever seen. It’s absolutely right that those different interest groups slug it out. At least it’s (mostly) done openly, unlike the decisions made behind closed doors by proprietary organisations answerable to no-one.

SS: We can’t rewrite history to excise XHTML 2.0, but should the two communities work to converge into one somehow? Is that even possible?

BL: I’d like to see one community , but suspect the cultural clashes are too large. So we have to get along, working together mostly and fighting occasionally, just like a family – albeit sometimes most like the Addams Family.

SS: How much actual real-world confusion is there among developers? Where should they go to see what the “true” spec says?

BL: If you want to see what’s already implemented in browsers now, look at W3C spec. If you want to see what might be coming (or how things may change) look at WHATWG spec.

Opera implements following the WHATWG spec, because that’s where nitty-gritty of the leading-edge stuff is discussed. But we also actively support and participate in the W3C as we see the value in having stable snapshots that developers can refer to, and it’s also the forum for many other vital spec discussions about Web Manifest, Device APIs etc. It’s possible to love both and, as we’re Norwegian, our hearts are full of love for all.

In praise of community conferences

As part of my usual Autumn tour of European capitals (this year, Berlin, Bucharest, Amsterdam, London, Paris, Madrid, Oslo) I’ve been lucky enough to speak at three community conferences, which are always my favourite.

SmartWeb, Bucharest

The first was SmartWeb conference in Bucharest, Romania. This was started last year by Gabi Schiopu who was frustrated by the lack of front-end conferences in his country, but the cost of international travel and hotels is prohibitive, so decided to start his own. So he got an event organising partner (thank you, Evensys!) and invited speakers. It proved so successful that he ran it for a second year. As I’m paid to do international jetsetting by Opera, I asked that my speaker fee be converted into free tickets for deserving local university/ school students. We’re all pictured below with McCartney-esque cheesy grins and thumbs up. By an almost incredible co-incidence, we were all wearing matching Opera t-shirts.

students

I had great fun presenting and MCing the event, and Bucharest is a delightful city.

Fronteers, Amsterdam

The second was Fronteers in Amsterdam. This year is the seventh conference; I’ve been to four (and spoken at three, if you don’t count this year’s lightning talk the night before). Fronteers is a conference I like to attend because it’s deeply technical, which makes it pretty scary as a speaker but very useful for the audience – there’s no “How I get inspiration from, like, nature and moleskines” or “Iterate often and dare to fail, you’re awesome” stocking-filler on this stage. (And, what a stage it is! A giant cinema screen in the beautiful Pathé Tuschinski cinema. They could probably easily fill a bigger venue, but part of the Fronteers charm is this venue.)

My friend Shwetank Dixit spoke on WebRTC – A Front-end perspective and, as he’d come all the way from India, the rest of the Opera Devrel crew descended on Amsterdam to give moral support and drink Dutch beer (the best is called “jenever” – no more than 4 pints, though). As usual, lots to learn and lovely to meet the great and the good of Europe’s web developers there.

Fronteers is organised by a group of volunteers, and its charitable status means that they don’t turn a profit at the end of the year – all money made is reinvested back into other events and initiatives for the Dutch web development community. Yay. Thanks, Fronteers crew, for putting on the conference and looking after me so well (even though I wasn’t actually speaking).

ParisWeb, Mauritius

Only joking- Paris, duh. For its ninth year, I decided to ruin its reputation and give a talk on “Web Components- The Right Way” with Karl Groves of The Paciello Group. Here’s the video, and here are our slides:

What’s jolly nice about ParisWeb is that English talks are simultaneously translated into French, all talks are translated into sign language and transcribed live. The latter was useful to me as I find it easier to read French than to follow the spoken language (French people spell much better than they pronounce), especially technical French for hours. I was especially proud when the signing interpreter sought me out after my unscheduled lightning talk (video, starts at 18 mins) to thank me for giving her the opportunity to sign “rectal prolapse” and “ejaculate my own liquified spleen” which, inexplicably, she seldom gets to do.

Again, ParisWeb is run by a group of volunteers who do it for love of the web.

Vive les volunteers! Please do all you can to support these conferences and, if you’re invited to speak, accept – it’s part of contributing back.