The Readability URL shortener

I’ve written before on how reading for the web is changing for the better. We’re seeing new tools and services that take away the cruft from web pages and help us get to the content on our own terms. Readability is one of the services leading the charge. It provides a browser plugin (and a plain bookmarklet) that will present a web page in a beautiful clean layout with quiet background colors and clean, crisp fonts.

A few weeks ago Readability announced a satellite service in the form of a URL shortener called This service not only shortens the URL but also injects some JavaScript that places an unobtrusive bar at the bar at the top of the page that gives you a link the cleaned up, readability version of the site. Even though I dislike the idea of a URL shortener in general (I would like to see where I am going, thank you very much) I think is actually a good complement to Readability


The implementation is well done and I really like the fact that they don’t automatically apply the Readability view for you. A growing number of websites out there are actually well designed and I like being able to see the variety and creativity. However for the times that I do want something cleaner does a really good job. I think the service caches the Readability view version of the page because it seems to load faster than applying the browser plugin. I like the feeling that Readability is actively trying to make the web reading experience better for me and giving me the control I need to customize my experience. I am starting to use Readability even for reasonably well-designed sites (if the font is too small or the colors seem off). But that’s a personal preference and I’m glad that keeps that decision in my hands.

One thing that I do think is lacking with is integration with Twitter clients. If (and by extension, Readability) is going to make a dent in the URL-shortening game it needs popular Twitter clients to offer it as an option. I don’t know of any clients that actually do offer it at this point, but I would really love to see it available. As someone who wants to help the reading revolution along I would rather use than or any of the others (since I don’t really care about “tracking” who visits my shortened links). So if you’re working on a Twitter client (or know someone who is) please have as a URL shortening option.

I have to admit that I haven’t actually used myself. I don’t share that many links via Twitter and I prefer posting the full URL if I can. If it’s too big I generally just use default shortener because it’s faster and I have more important things to do than a copy-paste dance. I’m sure there are a lot more people like myself who are casual linkers on Twitters and will go for the default, least resistance option. That’s why getting into Twitter clients is essential. is one of those services that fulfills a nice little niche and does it well enough that you don’t have to write long pieces detailing its functionality. It’s a simple tool that does one thing well and makes the UNIX user in me happy. The next time you need to shorten a URL and don’t mind doing some copy-pasting, is highly recommended.

Code what you don’t know

“Write what you know” is advice often given to new writers and authors. On the whole, it seems like good advice (though some would beg to differ). But when it comes to programming I would suggest doing just the opposite. To become a better programmer (or even a good one) it is essential that you constantly program what you don’t know.

The thing about programming (and to some extent writing too) is that it’s very easy to fall into a rut. It’s very easy to get into a habit of just building the same few things over and over again without doing anything really different. And down that path lies madness, or at least boredom. Most programmers I know (myself included) have low tolerances for boredom and boring things. And yet doing things that you are already familiar with is so very comfortable. You don’t need to expend much energy and can just keep ticking things off a checklist. Unfortunately, stagnation (and by extension, mediocrity) is probably one of the worst things that can happen to you as a programmer.

The world of software changes all the time. And that pace seems only to have gotten faster in recent years. Learning new things on a daily basis is part of the job description now. However, just keeping up with the times isn’t the only reason to keep doing new things.

It turns out that there is a small region of things that we can do to actually improve ourselves. It’s sort of a Goldilocks zone of performance — not too hard, but no too easy. Too hard and we simply get frustrated and give up. Too easy and we get bored and never learn anything useful. To become better as a programmer we must find that zone of things that are just slightly out of reach. That’s why we should continually be building what we don’t know — picking topics and projects that are slightly out of our current domain of knowledge, learning what we need to get the job done. Not only do we get to keep improving as programmers, we keep increasing our skill set and build an increasing repertoire of projects that are each different from the other. We don’t tie ourselves down as being just blub programmers but have a wide range of skills and tools that we can pull from at a moment’s notice.

Of course there is always the argument — “What if I don’t want to constantly get better?”. While I would like to say that’s a personal choice and one you’re free to make, the truth is even you’re not moving forward, you’re moving backward. There’s a growing amount of evidence to suggest that even if you keep doing the same job at a competent level over years, your abilities will keep getting worse over years. When it comes to skilled work (like programming and writing) you have to keep moving just to stay in the same place.

While that can sound depressing and seem like too much work, I like to look on the bright side — we don’t have to go looking for external motivations and reasons for doing new, interesting things. It’s a free pass to keep doing work that’s always a little bit different and never boring or repetitive. It’s an excuse to be on the bleeding edge (and we all know how we programmers love the bleeding edge).

That’s enough pep talk for one day. Time to get back to hacking.

Sunday Selection 2010-04-24

Sorry for the delay folks, I realize it’s not Sunday in most parts of the world, but I still have about 3 hours here on the East coast of America, so here goes.

Around the Internet

Is sitting a lethal activity? I’ve always had an interest in ergonomics and good work places, but I’ve started to hear more and more about how sitting is downright dangerous even if you have an ergonomic chair. I’ve personally been trying to do more of my work standing up, but it’s not easy considering that there is about one place in the whole school where I can stand and work in reasonable comfort.

Principle of Least Software For most of my work, I can just use three programs — Firefox, Emacs and a Terminal. When I’m on my Mac the list lengthens a little to include OmniFocus and iTunes. I try to use the bare minimum amount of software and though there’s little desktop software I need, I do use a lot of webapps and services. I wish I could use less.

From the Bookshelf

Talent is Overrated Continuing my readings on peak performance and top performers, I decided to reread this book (which I bought along with Outliers). The writing isn’t as good as Gladwell’s (and there’s a whole chapter on what businesses can go, which I don’t care about). But it’s still packed full of interesting examples and useful information.


Quotebook It’s a nifty little iOS app to store quotes. It doesn’t come with thousands of built-in quotes but rather lets you collect and curate your own collection. ┬áIt’s a bit limited without an accompanying web or desktop app because I don’t fancy typing in or copying large amounts of text on iOS, but I think something like that is in the works.

I got nothing

Sometimes you open up a blank page (or blank text entry box) and there’s just. You know you should write something, you may even want to write something, but when it comes to actually putting words on the page you simply draw a blank. That is me now. And it’s not that my life is boring right now either. Nope, I just finished the first draft of my thesis, I’m going to start a project to write a simple network chat system and I’m making progress on an internship application. I’m also trying desperately to figure out how I’m going to get my driver’s license before I graduate and move to another state. Even though there is a lot going on my life, there isn’t anything I consider worth writing about.

I’ve never been interested in just being a blogger. I’ve always written this blog with the idea that the writing should flow from the things I do in life, the things I learn, the technologies I explore. As a corollary to that, I assumed that if I just exposed myself to enough ideas, information and activities I would have stuff to write about. But it’s not that simple. I’m not writing Wikipedia entries here, I want to construct narratives — write articles that tell a story, even if it is a story about the inner workings of some arcane technology. Unfortunately, constructing a narrative out of the myriad experiences that I have everyday doesn’t always come naturally.

What makes the problem even more difficult is that most of the stuff I’m doing right now doesn’t break easily into small chunks that fit into a blog post. For my honors thesis I’m currently in dissertation mode which means that the whole thing is one 30-page manuscript in my head right now and I’m not even going to try breaking into blog sized pieces until I’m done with it in a few weeks. My embedded systems project involves controlling a model train system using microprocessors over Ethernet. But in this case the parts in isolation mean nothing and we’re not close enough to the end for me to write anything worthwhile about it. Maybe when it’s done.

I’ll admit that part of this might just be me not looking hard enough and trying to tease out the important, standalone parts out of the whole. I don’t know if I’d make a very good journalist. But part of it is also the disconnect between the process of making something and describing it. When you’re making something you’re in the zone — you can hold the whole problem space in your head and navigate it at will. The different subsystems of your project aren’t rigidly separate in your head (no matter how they might actually be structured), rather they all sort of flow together and the boundaries are blurry at best (unless you’re interacting with components that you didn’t make yourself). But when you’re describing your system, you can’t just provide a brain dump of your head. To give a description that others can follow and use you have to break things apart into sections and then weave them back together in a meaningful, but not overwhelming narrative. And that is hard. It requires you to be familiar with the system, be disconnected enough to take a step back and be experienced enough in writing to do a good job.

I’ve done it before with other projects, but I’m not at the position where I feel comfortable with projects that I can form what I’ve learned and done into a coherent narrative. So for now, I got nothing (because you don’t want more blog posts about Twitter clients and paywalls).

Combining timeboxing and the Pomodoro Technique

I’ve been reading a lot about performance and flow recently and there are two things that have become abundantly clear to me: Becoming really good at something requires lots of time and effort (about 10,000 hours). But it’s not just raw effort, it’s deliberate practice — effort that keeps pushing you to become better. At the same time, you do your best work and feel best when you are engaged in flow — when you’re involved in something so deeply that you lose track of time and suspend all the worries and concerns of daily life. I think these two ideas go hand in hand. You must put in a lot of hard work, but that work must be done in focused blocks of time. Working for 10 years while being constantly interrupted by tweets and email won’t help you and neither will working for 2-3 hours once a week.

I’ve been trying to pull these ideas together in my daily life. I’ve written about how I’m doing some amount of reading, writing and programming everyday. Some days are better than others, but on the whole I’ve been doing pretty well on that front. Though come to think of it, I haven’t been keeping strict records and maybe I should start. Luckily for me, this semester I actually have long blocks of time uninterrupted by class or activities that I can use to get real work done. I’ve recently started apply two time management techniques — Pomodoro and timeboxing — to help get into flow and make the most of these blocks.

Timeboxing is a technique where you a set aside a fixed block (or box) of time to a single task. When that block of time is over, you stop. You can take a few seconds to finish that sentence or do one last compile, but nothing more than brief touches. If you finish earlier you can start on the next box or take a break. The beauty of this is that you’re focusing on time spent, not tasks completed. By doing so you’re fighting off Parkinson’s Law — works expands to fill the time available. You have control of the immediate time spent and if you need more time you can allocate a box later. This prevents you from suddenly spending hours and hours on something you thought would be done quickly.

I’ve found this most effective with homework. I have homework due for my Networks class on Monday or Wednesday afternoon. But I also have mornings free on those days. I set a timebox from 9am to noon and this forces to get up in time and work straight through those 3 hours without getting distracted. It also helps focus my mind — I’ve been able to get through homework sets with 25+ problems in those 3 hours. I’m often done in about 2 hours which gives me time to ask the professor or friends if there’s something I’m stuck on. I should note that I’ve done the reading beforehand and not doing it would slow me down.

I’ve also started using timeboxes for my thesis and programming projects, but the results are a bit harder to measure. One problem that I’ve run into is that I get really tired if I make my brain work for 3 hours straight. If I can’t solve a problem or get hit by an obscure bug I get frustrated and my productivity dives. So I combine timeboxing with the Pomodoro Technique.

I break down each block into smaller 30 minute chunks. In each chunk I spend 25 minutes working and the remaining 5 minutes taking a break. And by that I mean a real break. During those 5 minutes there is no email or Facebook. I check Twitter but if there is something interesting, I favorite the tweet for later instead of following it right then. Mostly I take a walk, do some stretching, rest my eyes and get a drink of water.

The 5 minute break is great because it lets me disconnect for a while but doesn’t break my flow. I’ve found that I become tired less easily and if I run into problems, the break stops me from getting frustrated. I try to align my breaks with work boundaries — I’ll wait till the end of the paragraph or section before I take a break. If that requires me to push the break back a few minutes that’s fine. Using this method I can work for about 4 periods (2 hours) on the same major task. During the 5th one I start to feel myself getting tired so I start winding down. I’ll go onto a 6th period if I know it’s only wrapping up — backups or cleaning up code, stuff that doesn’t require full brain engagement. After the sixth period I need a longer break. Since I rarely have blocks of time longer than 3 hours that’s not a problem.

By combining Pomodoro and timeboxing I’m trying to get the best of both worlds — I have long, mostly uninterrupted periods where I can get into the zone and pump work out. At the same time the little breaks help me to disconnect for a bit, freshen up and then get back to work. I’ve found that I can get a lot more done in a fixed amount of time. It’s still early days but I plan on sticking to this for the rest of the semester and maybe into graduate school.