Amazon has a strange lack of an affiliate programme. Yes, I know they have a very well known affiliate programme. Yes, I know I spell programme with an extra m and an e, but I’m English. Live with it.

They don’t push the affiliate programme any more, probably because they feel they don’t need it. They have no real online competition in the online shopping marketplace. Even when we see products elsewhere, we turn to Amazon for value and reassurance.

But if I worked at Amazon, I think I’d resurrect the scheme. Supermarkets have shown that loyalty card schemes are valuable, because the perceived value is high even when the actual payback is marginal, so I think it’s still worth it.

A low rate of payback will let us incorporate more affiliates into the scheme. Let’s start with … everyone. Everyone. No sign up required, we’re all in.

Ok, now for my blog, I want to get some Amazon points. What I really want is a one-click buy button. No need to go anywhere else, no popups, just one click buy. A bit like a tweet button. And hey, that could be used for anything, from buying some baby supplies to a blog subscription.

Ok, that’s the obvious bit. We’ll put the code for that in an ’embed’ link on the Amazon site, under the existing one-click buy button.

Next, we’re going to tweak all the site urls. Every URL you see on Amazon, in the address bar, will contain your affiliate code. That way, every time you paste a link into a tweet, or a Facebook page, or anywhere, you get affiliate points. Don’t need the dumb grey affiliate bar. Just cut paste tweet. Cash.

That way I get more serendipitous referral points, which will bring me back to Amazon, to buy another book, another Kindle, or whatever. Each time I get points, I’ll get an email. This will make me happy.

Actually I believe I earned about five bucks this year through serendipity. No idea how. I think if the referrals worked across countries, I’d get more. Drives me crazy that the UK and US stores are different. I’d fix that too.

So, in summary, more affiliate payments. I’ll admit right here right now that I’m not going to spend much more – I really only shop online at Amazon or Apple already. But a few kickbacks will probably make me feel better about doing so.

Being wrong

Back in 1999, I spoke to a friend of a friend about their website. “It’s no good,” I said, “all the search engines are established. Yahoo, Altavista, Lycos. There will be no new ones.”

Google started the same year.

Back in 2004, I spoke to a client. “It’s no good,” I said, “people won’t give you their information for free any more. You have to offer them something in return.”

Facebook started the same year.

Back in 2000, I spoke to a colleague. “It’s no good,” I said, “you have to be compatible with PCs. Apple are a dead company.”

Apple are now the biggest company in the world.

Back in 2009, I spoke to a friend. “It’s no good,” I said, “this is just like Facebook. What’s the point?”

I now work at Twitter. And it’s still nothing like Facebook.

Contact me now at if you’d like me to consult for your startup.

How to present something really boring and get away with it

Some wise person once taught me the correct way to present. You must structure your talk, and follow these three simple rules:
– say what you’re going to say
– say it
– say what you’ve said.

Now I’m not an expert in giving talks. No.

However, over the years I’ve built up a lot of experience at listening to mind-numbingly dull talks, whether lectures at university, technical demonstrations at the office, or the worst ever, wedding speeches.

The rules given above are an excellent way to give a REALLY BORING talk.
Please, do not follow them.

An awful talk usually goes like this:
– a pointless introduction “my talk today is about bananas”
– slide of contents. You read out all the items, often explaining the obvious. For example, “first I’m going to talk about peeling, which is the process of peeling a banana.”
– many slides follow, usually full of too many words and uninteresting facts
– finish up with a reiteration of the contents.

As an audience member, I would like to request that you stop. Just stop.
Here are three rules for a FUN structured talk:
– tell me why I should listen
– tell me a story
– give me something to think about.

This is actually a bit harder to put together, because you’ve got to start thinking. Why SHOULD the audience listen? What should they get out of it?

If you cannot answer this, do not give the talk.

But let’s say you’ve been told to give a boring talk. Hmm, lets pick something really dull for an example: your team has saved 10% bandwidth in the reverse proxy cluster.

Why should I listen? Well, maybe bandwidth is a real constraint. Maybe bandwidth is holding up feature launches. Maybe it costs money? There must be a simple layman’s explanation. If not, maybe you shouldn’t have done it!

So we’re saving money. Ok. And we’re the team lead. We have experience. This is getting better. Start there.

I like to start with some intrigue. “I’m Ralph, I’m the head of proxy reversals, and I’m going to tell you how we saved a baby giraffe.”

Now tell us a story. Add some jokes. Our story is that we’ve been trying to fix this for ages, but we were looking at the flange panel, when really the flux lever was jammed. Oh, how we laughed! Take us with you. Don’t rush.

Use one or two big numbers, if the numbers are impressive. Our reverse proxy cluster is the size of six elephants. We’ve saved bandwidth equivalent to downloading six thousand copies of Bohemian Rhapsody.

Now we just need to finish strong. A final slide, a final sentence. What was the lesson? Be rigorous, get it right? Ten percent savings means ten percent more bacon? If you can, revisit the intrigue from your opening. How did you save the giraffe? Give us a statement, say thank you, and never ever trail off with “and so that’s about it…”

Finally, practice your talk. Even if you’re alone, in a cupboard. It will help you pace yourself, to practice the timing of your jokes.

The greatest feeling ever is the stretch between setup line and punch line. The longer you leave it, the better the result. Trust me.

Next time you give a talk, look out at the audience. If they’re all checking tweets on their iPhones, you’ve failed. If they’re all hanging on to hear more, you’ve won.

And winning is everything.

Education, education, education.

I’ve been reading newspapers online from back home. People in the UK are always tinkering with education. Like others, I judge them on their ideas, call them crazy, and laugh about how little they understand about anything.

What’s odd is that we always compare the proposed changes with our own education. Which in my case began some thirty years ago.

I’m a computer programmer. And this is the kind of education I had.

Primary school was divided in two: infants (5-7), and juniors (7-11).

Before that came nursery school. I never understood nursery school. You turn up, you play with other kids. Where’s the schooling? Years later, my mum told me that there was teaching, but that I’d been emphatic about playing. School was for playing I said. Home was for learning.

I learnt a lot at home, from an early age. Having a brother 18 months ahead is a great way to just naturally learn.

At junior school we had this great maths system based on boxes of cards. Each box was a different colour, and contained about three hundred cards. You could work at your own pace. It was fan-tas-tic.

The school probably had three computers. BBC micros, running old educational software like grannies garden. You could expect to use one of these about three times, total, only on special occasions.

Secondary school is 11-16.

Now, my secondary school was considered a good quality school. One of the best in the area. Not posh enough for local boys Beckham and Ive to have been to, but good nonetheless. When I got there it had a room (!) full of BBC micros. After a year, they were replaced with a room of Acorn Archimedes.

Never heard of that? Hmm, surprising. Or not surprising at all, because they were computers intended only for education. That’s right, some smartarse in government thought that kids should learn how to use one kind of computer, just so they’d be completely lost when it turned out the rest of the world used PCs. This is why we point at politicians and laugh.

Anyway, so we had computer lessons. No, I’m joking. There were no computer classes. THEY’D ACTUALLY STOPPED TEACHING COMPUTER PROGRAMMING. Gone. Kapoof. No programming lessons at all. They had them in the eighties, but had stopped them.

How? What? Why?

So what did we have? Well, for GCSE, I could take Office Technology. This involved learning to type. To music. Taking dictation. Writing letters. Oh yes, it was fifties secretarial school. I actually didn’t get the top mark in this. Why? Conversation went like this: me: “Do you think I’ll get an A Star?” her: “A what?” So, yeah, didn’t get one.

Somehow I got a B in English Language. Bastards.

On to sixth form (16-18). This was known to be a shitty school. I was tired of travelling on the train. Went to the local school. No friends. Didn’t care.

But they had PCs. They taught PCs. You know what? It was great!
Databases, programming, hacking.
Computing A-Level, ka-ching! Wonderful.

During this time, my brother borrowed the 1600baud modem from his school. You have no idea how slow this thing was. We couldn’t pay for AOL, so I spent hours online to various bulletin boards. Our monthly phone bill went up from 10 to 80 pounds a month. My parents were very forgiving. I upgraded to 14.4k. Wow. And then 28.8k, 36.6k, 56k. I loved being online.

Anyway, On to university (18-21). A prestigious one.

Oh my god.

Green screen terminals. Only. In the computer department. Some neck beard bleating about how they were better, if only you’d spend every hour of the day configuring it. How cursor keys that actually worked were a dumb idea.

I hated it. You know what, they had colour PCs in the library. I used those.

I really wish they could have caught my interest there. In retrospect the material was useful, but god they made it so hard to stay interested.

More lectures? Just kill me.

They assumed no computer skills at all to start with. Computing A-Level was not a prerequisite. So the first year was three quarters ignorable. Not a good start.

The Internet was taking off, but these guys did not care. I wasn’t allowed to install a phone line in my room to run a modem. It was so hard.

What an amazing waste of 150 energetic ambitious students, who could have done so much.

My education was terrible.

I imagine computer education now must be different because work life is so different. The Internet and OSS bridged the gap between abstract education and applied ideas. I imagine students these days are burning hours on GitHub. Brilliant.

My advice to them: you’ll never again have as much time as you do now. Try everything. Obsess over something. Get into Open Source in a big way, even if you’re just helping on the fringes. Make mistakes. Learn things.

And try to ignore us adults as we tinker with your education.
You see, we grew up in a very different world. No laptops, no mobile phones, no Internet.
And that’s how we imagine school is still.

Why do we use jQuery?

It’s a common question these days: “why use jQuery”?

Reasons given to avoid it are:

  • Large size
  • Poor UI Library
  • No class support
  • No script loader
  • None of this, none of that
  • Moan moan moan

As far as file-size goes, I think the lack of modularity could be a real issue. If we were building a fast-as-lightning mobile app, I’d break it into parts. Or use something else. Ender, for example.

But for a reasonably-sized website, here’s what we really want:

  • Friendly, familiar API: CHECK
  • Well tested, especially across older browsers: CHECK
  • DOM lookup, traversal, manipulation: CHECK
  • AJAX helpers: CHECK
  • Custom events framework: CHECK
  • A few simple animation effects, including a queue: CHECK

Ok cool, so jQuery is actually giving us a lot of stuff, and we can just build on top of it where we need to. I DON’T find that jQuery is providing lots of things that we’re not using. Also, jQuery isn’t dictating how we work with our own code – it just provides a toolset for DOM manipulation. That gives us a lot of flexibility to find our own style.

On top of this, at Twitter we add:

  • ES5-shim – for JavaScript strict mode support
  • Loadrunner – for script loading / dependency management
  • Our custom component framework

Here’s a few things we WISH we had:

  • HTML5 polyfill – for additional input controls
  • All of DOJO’s UI components, especially (personally) the datagrid

jQuery’s plugins and UI components are the parts I avoid, but are also the parts we can build ourselves. I envy the DOJO UI, because as a user I find the controls to be useful and reliable, but i always find it very hard to work with them. Their API is awful. I’d love to see a full port to jQuery.

Ultimately, jQuery is actually a useful tool. Long may it continue to be so.