A Developer’s Love Hate Relationship with Design

One of my fav podcasts on Design

One of my fav podcasts on Design

There’s a reason why front end frameworks like Bootstrap and Zurb Foundation were embraced with open arms by developers all around the world. It allowed us, design clueless devs, to get something passable up in a very short period of time. But really, we all know deep down it’s a temporary fix till the web designer shows up.

I think instinctively, we all have an innate feel for something that is either pretty or ugly. We might not be able to vocalise exactly what aspects of the subject is breathtakingly beautiful or unceremoniously ugly, but we know it to be true all the same. So begins my quest to plug this knowledge gap on what constitutes good design and how can I implement it?

In my search to find the right vocabulary to articulate such feels, I went on a binge reading spree. The one book that probably sticks out the most is Design of Everyday Things. It’s a pretty good book and it made me so much more acutely aware of my physical space.

After books, I ventured on to online resources and there’s a shit ton of information out there. As a developer, I appreciated posts targeted specifically at me such as Design For Developers and Design for Developers. Yes — they both go by the same name. There are also courses such as Hack Design.

In addition to books and online resources, I came across a series of documentaries made by Gary Hustwit. They are Helvetica, Objectified and Urbanized. I haven’t watched them yet but I’ve heard good things about Helvetica. Objectified was referred to me by hackdesign.org. I’m probably gonna marathon all three this weekend.

Which leaves us with our last medium — audio. With that, there can be no doubt which podcast reigns supreme. 99% Invisible is one of my favourite podcasts — the other being Radiolab but you knew that already.

Design is often championed as one leg in a 3 legged stool with the other two being dev and marketing/sales. Strangely enough, it’s still the most neglected of the 3. More so in SE Asia where I am from. This dearth of awareness as to what constitutes good design and the importance of good design, has led me and some other fine folks to organise Design 101 for Web & Mobile Product Owners, Managers and Developers. It’s a one day crash course in design aimed not only at devs but anyone who works with web and mobile related products.

Hopefully I’ll start to see the light soon — my eyes can’t take anymore of my bad designs. If this isn’t scratching your own itch, I don’t know what is.

To Learn, Must One Always Be In A State Of Discomfort?

Mind the Knowledge Gap

Mind the Knowledge Gap

I’ve been coding Django apps for about 2 years now. I can initiate a server running Arch Linux, get it up and running and deploy my Django app in a couple of hours. I code using Vim. I use zsh as my default terminal. I know enough unix commands to perform the usual sed/ack/grep (or Ag if you’ve downloaded Silver Searcher). Conceptually, I can explain most web development concepts (although I stil have trouble understanding exactly what a reverse proxy does). In two years, I’ve also had to learn HTML/CSS/Javascript. It’s kinda taken for granted that and self-respected web developer would auto-learn that along the way. Understanding the subtleties of Git (merge vs. rebase) and how to use it (git flow) is also one of those ‘taken for granted’ knowledge grabs. My Python isn’t the most elegant, but give me a couple rounds of refactoring, I would have spotted and corrected most of the low hanging fruit ‘mistakes’.

There were a couple of months I felt my rate of learning wasn’t improving as quickly as before. I had become somewhat comfortable in the daily routine. This didn’t last long of course. Recently, I had to build a realtime map app for one of my products,  TripEvent. To do so, I had to use gevent-socketio. Diving into this triggered a whole chain of questions that exposed my lack of understanding about what really goes on under the bonnet.

I’ve relied heavily on my pattern recognition skills (and slavish hours just practicing, building) but there is not escaping the fact that some key computer concepts still eludes me. For example: when a user lands on my website, this generates a GET request that is processed by my reverse proxy (nginx in my case) which is somehow handed off to uwsgi which then hits my django app which finally hits my database (postgres). Is this all happening on 1 process? What happens when there are 2 requests at the same time? How does tweaking my nginx worker settings affect this? How this Python’s GIL come into play? How is multi-threading or multi-processing con-currency relevant? In the context of Python, how does gevent and its greenlets overcome this? I think you guys can see where I’m getting at.

Why is it that there isn’t any resource that explains such concepts from a web developer’s point of view? Especially one that doesn’t have formal computer science training. I imagine there must be many more people like me out there, all self taught, all wondering what really goes on under the bonnet! The information as always, is all out there. It’s piecing it together and make it conceptually sound in the context of my job (web developer) that’s hard.

I am in a major state of discomfort but this is forcing to learn and read more and ultimately plug the missing knowledge gaps. I think one always needs to be in a slight state of discomfort to improve. To be comfortable and not have questions gnawing at the back of your brain is a submission that you’ve not doing anything interest or new.

Software is a Young Buck

nom nom nom

Browsing reddit and came across this comment on this post:

Computer programmer…

We are in the “pre-industrial” era of software development, and even the best of us aren’t very good at it

Think about it..

Mechanical engineering is hundreds of years old

Architecture is older

Software starts at roughly 1950

We have a long way to go

When a new bridge, building or airplane is designed, everybody knows it will almost certainly work correctly

Major software projects frequently crash and burn and are abandoned

Those that succeed are filled with bugs

Software is NOT a rigorous engineering discipline

..and yes..I have been programming since 1972 and I know a bit about software

So we have the following forces at work now:

What does this all mean? Simply, software is here and if you want to remain relevant in tomorrow’s economy, you gotta learn the language.

Programmers and Music

On the internet, no one knows you’re a dog

Randomly came across this comment by Zed Shaw. The whole thread is worth a read. It’s about a parent having a go at her son for spending all day long playing the guitar. Tough love.

Linguistic skills. Music is a language, and so is programming. But, they’re both sort of fake languages that are fairly small when compared to a human language. This ability to learn and apply small made up languages gives musicians an edge when learning to code. Programmers will typically learn 4-6 languages during their career, and if they want to stay sharp they might have to learn that many a year. A musician might never learn more than just one notation, but this ability to learn a sort of fake language helps them with learning programming.

I’ve been noticing a high correlation between programmers and music ever since I started coding 2 years back. Besides Zed Shaw, other prominent programmers/musicians:

  • Derek Sivers of the CD Baby fame is a self taught programmer
  • Adrian Holovaty of the Django fame. Here is him playing Super Mario. His latest startup, Soundslice is really pretty (and useful too)

A cursory search on Google turns up this post: http://skeptics.stackexchange.com/questions/1570/are-programmers-likely-to-be-musicians

I think one of the closest similarities between programming and playing music is instant gratification. You write some code, refresh/compile, and you see the results immediately. Same with music, you play a riff or a chord, you get feedback instantly. The feedback loop is there to see and the more time you spend at it, the better you get. Once you start seeing improvement, you get addicted. It’s the same psychology behind self-efficacy — the feeling that you’re making good use of your time.

Games will be the death of you

http://upload.wikimedia.org/wikipedia/en/0/03/Aybabtu.pngSaw this post on hackernews and the top comment reads:

Giving up video games in my 20s.
If I hadn’t done that, I’d still be stuck in front of a game somewhere.
Those things will eat your life.


Games. A huge part of my life revolved around games. I’ve played them all and to some extent, got mostly good enough to pwn noobs in game. As any gamer can tell you, pwning someone, AI or human, is a very addictive feeling. To pwn someone, you need the best gear, the highest EXP, the most organized guild and so on and so forth. It’s a perfectly designed feedback loop.


This is my EU League of Legends profile. I’ve clocked about 800 games in 2010 when it first launched. The average length of a game is about an hour so thats 800 hours or 33 days worth of time I spent on that game that year alone. That is also the last game in which I’ve dropped serious time commitment on. Having said that, I have an 80 Engineer in GW2 and a 80(11) Monk in D3 but those were attained casually over many many weeks. Before LoL, I’ve spent countless hours on the Civilisation series, Warcraft 3 (I was ranked on the ladder), Counterstrike (back when AWP had zero recoil)  and so much more.


I think playing games in moderation is fine. Nothing like blowing off steam in pub games in TF2 after a long day. Couple of frags bound to make you feel better. However, like most others, I took gaming seriously. Which self respecting gamer didn’t?


Looking back now, getting off the hardcore gaming routine must surely be the best thing I ever did.


Apple and Patents

The internet has been abuzz on Apple’s recent patent war. My stance on this has always been that as a public listed company, Apple owes a fiduciary duty to maximise returns to its stakeholder and wielding the patent sword is just one of the many tools powerful companies have at their employ. Don’t blame the player, blame the (broken) game.

We can debate the merits and flaws of the existing patent system but that’s well covered. Perhaps, a more interesting question to ask is why has Apple taken such an provocative stance when it could have chosen to adopt a defensive posture instead?

When you have a company that’s built around a product visionary, and when many people are dependent on this person, the stakes are incredibly high. I imagine, as part of a ‘risk reduction strategy’, that the C-Suite executives have been planning for a scenario where Steve Jobs might no longer be with the company, be it for natural causes or not. Deepening the moats through patent protection is a good method to stall while they scramble to find the next Steve Jobs. Paul Graham said that he spoke to someone ‘high level’ at Apple and asked if there’s any more ground breaking products in the pipeline — the answer was: noI suspect that a side result of this is that Apple will start using it’s massive cash reserve and go on an acquisition spree to try and find the next product visionary.

Faced with such a predicament, the most rationale decision management can make is to protect the company’s interests at all cost and milk the cow for all it’s worth while they can. Apple has at most 2 -3 cycles of products ahead of them that have been in planning for many years now. After which I imagine, they are going to plateau and their growth numbers are going to decline. They are going to be cruising at a steady state, reaping the harvest sown by Steve Jobs. So bring on the patent wars, Apple has a fort to defend.

Opportunity Cost of Higher Education and National Service

This article resounds with me a lot. Imagine I didn’t have my NS obligations and skipped university. Instead, I spent those 5 years learning and building products. At 8 hours a day, I would have clocked about 10,000 hours in programming and product knowledge. What a powerful experience and skillset that would be now. The best part is, I would have spent exactly $0 dollars in that time.

Right now, I would be reaping the benefits of that knowledge instead of starting from near ground zero. When I think about the the opportunity costs and the compounded effects of that, I get seriously depressed.

National Service is not just 2.5 years (at least it was during my time) of my life, it’s 2.5 years and whatever compounded wealth I would have gained otherwise.

Well, I guess that’s the price one has to pay for semi-reliable MRT services these days.


For those of you thinking of going to uni, why not check this out instead instead? http://techcrunch.com/2012/05/10/dev-boot-camp-is-a-ruby-success

Keep Putting Yourself Out There

The most significant and life changing experiences are typically ones you didn’t plan for. This I call serendipitous events. But there is a problem: serendipitous events are essentially random. But how does one plan for that?

Answer: By putting yourself out there.

The only way to increase your chances of such events occurring is by just simply going out, talking to people and doing things. The more times you put yourself out there in the wild, the higher the likelihood of you encountering a serendipitous event.

How I got my job at Odeon, and now the startup I’m working with, is really through a series of quite random events. If I had stayed within my comfort zone, I doubt I would be in the position I am in now.

So get out of your room and your comfort and do something! You never know just what might happen.

Could Youtube be the next Reddit?

Anyone who’s been around youtube from the early days will know just how bad the comments were. Trolling was rampant, the experience was just plain bad.

Sometime in the last 1-1.5 years, youtube made a change not just to their over UI but also the way comments were getting displayed. Top comments now appear on above the rest. This had a profoundly strong impact on the quality of comments that I’ve been reading over the last year. It used to be such that I would watch the video and ignore the comments knowing them to be an utter waste of time. Now, the comments are just as time-worthy as the video itself (if not more). They are often quite funny and meme-related. Not too long ago, every top comment went along the lines of taking something to the knee, a Skyrim reference.

So what’s this gotta do with Reddit? As any Redditor can tell you, one core retention driver for Reddit is about one-upping each other with witty comments in any given thread. If you ‘win’, you are bestowed  karma, if you ‘lose’, you get down voted into oblivion. What can you do with karma points? Absolutely nothing. However, the accumulation of karma (by karma whores) is one of the core driving usages on the site. This ‘witty content’ alone is powering an entire army of lurkers and upvoters. As someone who is becoming more of a content creator as opposed to content consumer of late, I certainly appreciate the upvotes and karma whenever I leave a ‘witty’ comment. And it makes me want to do more more more. Engagement goes up an order of magnitude. Such ‘point mechanics’ have been discussed to death over the last couple of years. It works but you need to adapt it to your context (website).

So what’s stopping Youtube from becoming like Reddit? The game of comments on a Youtube video works in exactly the same fashion. Who can come up with the wittiest comment gets visibility and ‘thumbs up’ points. The strange thing about this is that your comment score, via the number of thumbs up you have received, is not visible anywhere at all. Not on your profile, not next to your nick, not anywhere.

Now, the smart folks at youtube are probably very aware of this. They are deliberately not presenting such information to the audience. I can only thing of one reason for doing this: they want to keep the main thing, the main thing. Come to youtube to watch videos, not leave witty comments. They do not want to disturb the underlying retention driver that has seen them grow to become the largest viral video site (and also the largest video search engine).

Is this where arguments for Google’s ‘dont get social’ comes in? Perhaps. What I do know is that if they were to start displaying thumb’s up scores, the social dynamics of the site will lead to something like Reddit’s. Whether they want this or not is another matter altogether. Oh, they also need to fix the way comment replies are being done at the moment. It’s a bloody pain in the arse to keep track of sub comment threads.