Tech I Want To Build/Learn In 2014

Last day of 2013, and it's time to look ahead to the year to come. Here are my tech aims for 2014:

Learn Haskell

I decided last year I wasn't going to learn any new languagesscala. Instead I was going to double down & get really tasty at Clojure. There's still plenty of deliciousness left in that journey, but I think I've done well enough to pick up a little something new.

But what new thing should I choose? Well, probably the best advice I heard all year was from Steve Purcell, which I'll paraphrase as, "Figure out what the smartest, nicest people you can find are learning, and learn that." I look around and see Clojure & Haskell fitting that description, so it feels like the time is coming.

(Actually, Haskell isn't new to me. It's just my Haskell skills are so crusty as to earn a seat in the House of Lords. A 15-year hiatus, by my calculations.)

Chances of it happening: Strong. I love a new language. Would be nice if I had a commercial reason to motivate it though.

Write A Good Database Reporting System

Reports servers, universally, suck. In roughly-chronological order, I've used Oracle Reports, BIRT, Oracle Apex, JasperReports & Crystal Reports, and not one of them has shed a glimmer of hope. They're tolerable, but they're not good.

Here's a test you can apply to see if your report-server sucks: Which is easier? Adding a pink circle to the top-left corner of a report, or adding a new column to it and pushing it live?

The fact that it's easier to find the ellipse button than the deploy button is proof that something is tragically wrong.

I know why they all suck. I know exactly why. It's because they're designed on a lie. The lie is, "Use our tool and you can just drag & drop reports together. You'll never need to learn SQL and you'll never need to ask IT again."

BS. Never happens. Putting a drag & drop interface on it doesn't save you from learning the database schema, so the job gets pushed to IT anyway. Except now you've spent a packet on forcing a dumbed-down interface on people who'd be happier with SQL and git push. If we assumed the report-reader was non-technical, but the report-writer was a geek, we could get the turnaround time on new reports down to less than half an hour. And everyone would be happier.

Chances of it happening: Unknown. I can see how to build it. I believe it's commercially viable. But I can't see how to market it. That's something to mull.

Write an EDN Parser for Emacs

I've been playing around with a few CIDER tricks lately - such as this bind-a-Clojure-command tip - to improve my Clojure-on-Emacs workflow. I could do some far cooler stuff if Emacs could read Clojure data structures, and an EDN parser's the route to that.

For instance, I'm thinking a much better org-babel/Clojure integrationbabel for starters. After that, I'd love to have a buffer that pretty-prints the value of an atom, watches it for changes, and does some watch-style syntax-highlighting for any diffs. That would rock.

Chances of it happening: Good. Geeky confession: I enjoy writing parsers. And I'm always buggering around with Emacs these days, so it's probably just a matter of time.

Write An Editor

If you've been here before you've probably gathered that I'm an editor junkie, and there's a constant pull to scratch my own itch. My ideal editor would be a mashup of these principles:

Treat The User Like A Programmer, The Way Emacs Does.

Why is Emacs the only programming tool that assumes you'll want to program it? Sure, almost every editor has some means of extension, but Emacs really is in a different league. It opens on a "Program Me!" buffer for chrissakes.

(If you don't believe Emacs is uniquely extensible, check out my video, Writing A Spotify Client in 16 Minutes.)

Treat The User Like An Expert, The Way Vim Does.

For any tool you'll use for 40 hours a week, for the next decade, the initial learning curve is irrelevant. It's how productive it makes you after the first month that counts.

Treat The World Like It's The 21st Century, The Way LightTable Does.

In short, I would trade terminal support for an <svg> tag.

Chances of it happening: Slim, sadly. Writing a good editor - and a good one is the only kind I have any interest in writing - is a long, long road. Unless it can pay its way, I'm going to have to resist going down that rabbit hole.

Find A Day Job

2013 has been something of a sabbatical year for me. It's been fantastic for feeding my brain, but too isolated, and if I'm brutally honest, a little navel-gazing. I've decided to brush up my CV and find some smart people to build interesting things with. I did a few contracts last year, and there is something delightful about building to spec. This year I'm going to dive in with both feet.

Chances of it happening: Strong. Tell me if you know of any interesting opportunities!


  1. Okay, I tripped up & fell into Scala, but I got back up quickly.
  2. Better than this quick fix at least!