Reading List

On sex education for 7 year olds in UK schools

The BBC reports that Sex education should start at seven, Lib Dems say.

Of course 7 year old kids should get sex education at school; puberty is from 8 years old for girls, 9 for boys.

The whole point of education is to prepare kids for life, so you have to tell them about stuff first (hint: that’s what “prepare” means.)

Sex education results in fewer sexually transmitted diseases and fewer unwanted pregnancies. This is not only good for the people involved, but is better for the whole nation – which makes it excellent public policy.

However, “parents will retain the right to pull children under 15 out of sex education lessons” according to the Daily Mail. Why? Do we let them take kids out of Maths or Geography classes?

There should be no opt-out from parents trying to foist their religion or sexual hangups onto their children. Education > indoctrination.

Reading List

Standards ‘n’ all that jazz

French joke corner

Heard about the French chef who killed himself? He lost the huile d’olive.

Video corner

“Coders and hackers, ready to change the world, and the hackathon is the perfect place. But things don’t always go as planned…” by @ourmaninjapan

The fruitful lady of dawn

I really enjoy Brian Patten’s love poetry; he writes of joy and sadness and how the two can mingle, while never using words that you wouldn’t hear in an everyday conversation. He’s the only living poet whose works I regularly raid for my song lyrics. So when my battered old copy of his Love Poems fell apart, I invested in a shiny copy of his new Collected Love Poems.

Curiously, in a volume called “Collected Poems”, one of them is missing. It was in “Love Poems”, substantially revised from a previously published version, and revised for the better. But I can only assume Patten was still dissatisfied and so dropped it.

Because I’m talking online to some people about his poems (and who have bought his newest book on my recommendation), I’m copying the poem here so they have the text. Brian – if you want me to remove it, I will. But I think you’re mistaken; it’s a lovely piece. (And, sorry, but I stole the blue dress image for an unrecorded song called “The girl in the room”.)

The fruitful lady of dawn

She walks across the room and opens the skylight
thinking: “perhaps a bird will drop in
and teach me how to sing.”

She cannot speak easily of what she feels
nor can she fathom out
whose dawn her heart belongs in.

Among the men she knows
she knows few
who understand her freedom.

Baffled by her love and by
how she withdraws her love,
she remains an enigma,

and under the skylight
puts on her red dress calling it a blue one.
She approaches breakfast as she would a lover -

She is alive,
and one of her body’s commonest needs
I have made holy.

Reading List

Standards and tech

Freedom corner

Lonely hearts’ corner

Readers who are single may find this 80s dating video helpful. Invite me to the wedding, please.

On Internet Explorer supporting -webkit- vendor prefixes

News is just in from Microsoft that Internet Explorer on Windows Phone 8.1 Update will support legacy webkit-prefixed features.

Now, obviously I can’t speak for Microsoft or the IE team (Bill Gates despises me since I beat him in a nude limbo competition at Patrick Lauke’s birthday disco a few years back) but this brings a wry smile to my little face. It fell to me to write the blog post announcing that Opera was going to support some -webkit- prefixed CSS and be hated by the Internet for the 2.6 seconds it takes before someone more evil pops up.

Those in the know could guess this was coming. At a CSS Working Group meeting in February 2012 (search the minutes for “Vendor Prefixes”) this exchange took place:

tantek [Firefox]: At this point we’re trying to figure out which and how many webkit prefix properties to actually implement support for in Mozilla … Currently we have zero. Zero is no longer an option for us.
Florian [Opera], Sylvain [Microsoft]: Zero is not an option for us anymore either.

The reason that IE are doing it now, and we did it then, is simple. WebKit browsers, like other browsers, shipped experimental CSS with a prefix. When the CSS property was considered stable, all browsers apart from WebKit removed support for the prefixed version. WebKit browsers, however, did not remove the prefixed version, supporting it in parallel with the unprefixed syntax so that sites that had been made before the “standardising” of the property would not break.

Moreover, lazy developers only tested on WebKit browsers, so didn’t even add the -ms- prefix for Microsoft, -moz- prefix for Firefox or -o- prefix for Opera, so those browsers got a markedly worse experience.

At Opera, we did what we could with a relatively small team to contact site owners and developers and ask them to change it, but there were simply too many to deal with. It was much more effective simply to “support” those -webkit- prefixes that were the analogue of things we already supported; for example, we simply aliased -webkit-border-radius to border-radius.

Magically, lots of iPhone-only sites looked a lot better in Opera. As you can see from the screenshot comparisons in the IE blogpost, the same happens for them. It’s difficult to argue for ideological purity when a simple aliasing makes the user experience so demonstrably better – and one thing I’ve learned at Opera is most users don’t care two hoots for ideology if their favourite site works better in another browser.

It’s tempting to blame the mess on lazy developers, and they are without doubt at fault for enjoying the advantages of the Web without respecting its core principle of cross-browser compatibility. But some of the blame lies with WebKit developers, and (to a lesser extent) with the CSS Working Group for blessing vendor prefixes (though of course, browser makers just did this sort of crap anyway: scrollbar-face-color lurked around for years in IE without a prefix).

I’m very glad that the Blink rendering engine (which Opera, my employer, now uses) has abandoned vendor prefixes (and Firefox appears to have done the same.)

But, as managers around the world like to say when laying staff off because of bad management decisions, “we are where we are”. Legacy -webkit- prefixes hide in the dim recesses of sites used every day, and users deserve good experiences.

So good luck to the IE team; I’d do the same, because I’ve done the same. But I stand by my poetic words of 1 September 2012:

Vendor prefixes are like skidmarks on the underwear of web standards: sometimes unavoidable, but best washed and rinsed out as soon as possible.

Reading List

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.

On the complexity of the picture element

On dev.Opera, the man we call “Bovo the bachata boss” just published Responsive Images: Use Cases and Documented Code Snippets to Get You Started. It’s excellent; go and read it. (It isn’t a primer to the whole concept; we have one of those in the works.)

We umm-ed and ah-ed about what order to present the examples – “most likely use-case first” or “simplest to gnarliest syntax” order? We eventually decided the second, because the full syntax can be a bit scary.

But don’t that put you off. Responsive images addresses 4 different use-cases. There are also new constructs like sizes and srcset to wrap your bonce around. So the syntax for addressing all four at once is, at first sight, pretty complex.

But, like the most complex of the 24 English tenses, the Future Passive Perfect Continuous tense*, you’ll probably rarely need it.

And if my dull brain can understand it, yours can.

*I used it once, when complaining about how long a repair shop was taking with my guitar. “By our next gig, it will have been being mended for three weeks!”

On violence

I want to get the men who shot down MH17, and the leaders of Hamas and Israel, and repeatedly punch them in their faces until their noses are smashed. I would enjoy it.

The horrible, bitter irony of this is not lost on me.