Sunday Selection 2011-11-20

Around the Internet

How an MIT postdoc writes 3 books, a PhD defense and 6+ peer-review papers and finishes by 5:30. One of the best and worst things about being in a PhD program is that it is opened: it can take as long as you want it. Though being at a world class research university like MIT or Cornell is certainly a wonderful experience, I’m not at the point in the life where I want to spend more than a few years in one place. I want to do good work, do it in a focused manner without killing myself and hopefully have a life and get done in a reasonable amount of time.

Thrust, Drag and the 10x Effect Managing your time goes hand in hand with managing your energy and your activities. In the software world there’s a claim that the best engineers are often ten times as productive as mediocre ones. This article aims to give you some tools to help you on your way toward being ten times as productive.

Why Emacs? I make no secret of the fact that I think Emacs is the best text-editing environment on the planet. This post gives a very straightforward but informative introduction to the question of “Why Emacs?”


Derek Sivers’ Speech to Berklee College of Music I have a tremendous amount of admiration for Derek Sivers. While this speech is geared towards music majors, most of his lessons and advice can be generalized to your profession and life in general. There’s a lot of wisdom packed into a few minutes.


Readability is an awesome tool in the fight for a reading-focused, cleanly designed web experience. They started as a browser plugin that strips a page of unnecessary clutter and presents just the text in a clean, visually pleasing format. They’ve released upped their game with a payment model for publishers, a rich web application and a review-pending iOS app. If you read a lot on the web you probably want Readability in your toolbar.

Salvaging Dead Time and Procrastiworking

The last few weeks have been another continuous episode of “too much to do, too little time”. Graduate school is a very interesting environment from a work and productivity standpoint. On the one hand I don’t really have a fixed schedule (outside of a few hours of class a week) and can work whenever I want. I also live close to campus so commuting isn’t a issue. However distractions abound. I’m not meeting with professors on as regular a basis as I was, but there are still lots of talks, colloquia and seminars that I find really interesting and want to go see. It’s very easy to have the day be perforated by lots of little things and never get anything done. However, there’s one trick that I’ve learned that in the past week or so that can mitigate this fragmentation and helps me get things done: salvaging dead time.

Salvaging Dead Time

I currently have a class that runs from 10:10am to 11:25am. Then I go to a lunchtime talk at noon. Taking out the 5 minutes or so to get back to my office that leaves about half an hour that would normally be wasted on Hacker News or Twitter. As a graduate student I need to have pretty long blocks of time to sit, think and get work done. Thirty minutes generally isn’t a lot of time to get brain-work done and hence this would be “dead time” – time that is just lost.

However half an hour is more than enough time to knock off errands. Today I filed two helpdesk tickets, processed email down to inbox zero, paid my power bill and wrote out my rent check. Not only did I get actual work done (and a little high from crossing them off my checklist) it means I don’t have to take out time for them later. I don’t have to devote separate time chunks to errands later and I can allocate that time to actual research work. I think that counts as an all-round win.


While knocking off errands works great to salvage small blocks of dead time (up to about half-an-hour) sometimes there are sometimes larger blocks of 1-2 hours that also needs salvaging. This generally happens around dinner – I don’t have a fixed dinner time. Hence there’s often this awkward state where I won’t be having dinner till a little later, but don’t have anything planned before. Normally that time would evaporate into nothingness, but I’ve been trying out a different technique to salvage it.

While an hour isn’t enough time to do real research work, it definitely is enough to do some programming exercises or go through a few more pages of Real World Haskell. Earlier this week I decided to finally sit down and learn Haskell seriously. I’m familiar enough with Haskell at the moment that I can get up and running in a few minutes. Doing exercises is challenging enough that it takes brain work and requires thinking and learning. However at the same I don’t feel bad about leaving in the middle for dinner (I can generally finish the program I’m working on before leaving). This is classic procrastiworking: I’m slacking off on what I really should be doing (research) but instead of digesting Twitter I’m doing something beneficial.

There’s also a small matter of me being lazy and using dead time as an excuse for slacking off. Even though I know I could use an hour for programming exercises I’m tempted to slack off anyway. I’ve been trying to use procrastiworking for that too. I start off doing something that is really not work: like updating all my git repos or cleaning up my Emacs config. But once that’s over, since I’m already at the computer in a terminal, dealing with scripts and code I just quietly move myself over to a Haskell file and start hacking. It helps if I leave an unfinished function that I can then fill in (or a TODO note).

In Conclusion

Salvaging dead time and procrastiworking isn’t a catch-all solution for time management but I’ve found that it works great for the small blocks of time that I would have been wasting otherwise. Of course, you can’t fill in the blanks unless you have things to fill them with. Personally I use OmniFocus to keep a list of errands that I can go through in sequence. I also have a “project” for the longer blocks – working on Haskell – that easily decomposes into blocks of just a few minutes in length that can be taken up and put down without too much buildup. Finally I hope that in this case practive makes perfect and I get better at making use of dead time the more I consciously do it.

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.

April plans

Today is the 1st of April. It’s time for the internet to get out of control with craziness and ridiculous April’s Fools Day. Today was also registration day at college, meaning that all of us 20-something year-olds had to get up at 7 in the morning (known as the crack of dawn to most of us) and schedule next semesters dreary existence. It’s also the start of a new month and hopefully the start of good weather that actually lasts. Since it’s a new month, I decided it would be a good time to try doing things a little bit different. I suppose you could think of them as 30-day trials in some ways, but most of them are minor enough that I don’t think I need to use the ‘trial’ concept on them. In no particular order, here goes:

Writing daily: quantity over quality

I already write a fair amount, mostly in the form of blog posts and email. But I’m also prone to slacking off terribly. I’ve gone for a week at a time without writing anything substantial. Writing isn’t a day job for me, but it is something I enjoy, something I value and something I want to improve on. So I’m going to try a bit every day.

I’ve thought about doing this at various points in the past, but I’ve always agonized about the process. I would like to sit down at any computer and just write for a few minutes. But I could never decide how exactly to do it without having writing scattered all over the place. And I always knew in the back of my head that I needed to start down for an hour or so to actually write something of value.

I’ve always been a fan of quality over quantity, but for once I’m going to give it a rest. I’m going to write everyday in the hopes that the much increased throughput will produce a greater number of good works in the long run and it will also develop my writing skills (especially in terms of avoiding writer’s block and being able to switch into writing mode at the drop of a hat). When I have an extended period of time (an hour at least) I’ll write techie articles for this blog and when I have shorter snippets I’ll just dump them into documents on Google Docs.

Reading: everywhere, anytime

While I like to write, I like to read too. Unfortunately I don’t often have the time to sit down and read for a few hours at a time. On the other hand I have short bursts of time every now and then (5-10 minutes) and instead of just sitting right or looking at funny videos of cats, I want to spend that time reading. I’ve already read one book on my iPod Touch using little snippets of time here and there. Though I don’t think I’ll want to do that with all forms of literature, I can certainly do it for short pieces. I’m considering getting the Instapaper Pro app (which lets you save stuff you want to read) and offers some features like text extraction and font customization that I think will come in pretty handy.

Using both brain hemispheres

I’m going to be graduating in just over a year with two degrees: computer engineering. So yes, my left brain is going to be very well exercised. But I want my right brain to get some training too. In retrospect it might have been a good idea to pick up a studio art major, but I like what I have know.

In order to exercise my right hemisphere I’ve taken to looking at art and design. I don’t really study anything formally (though I among going to Italy over summer to study Renaissance Art) but I do observe and absorb. In particular I’ve been looking at data presentation and web design. I plan on spending some time building “blogazine“-like content on my website, probably centered about poetry and stories I’ve written before. I might even dabble in some hand-drawing (which I haven’t seriously done in years). Of course everything I do will be free for everyone to see and reuse.

Measuring my time usage

I often have days where I feel like I did a lot and didn’t really waste time, but didn’t quite accomplish much. I tried to apply the principle of “what you measure improves” by tracing all my time usage for a day. It turned out to be rather clumsy because I wanted a system where I could write things quickly and still get fairly good analytics on how I spent my time. Unfortunately paper is great for recording, but it sucks for analytics and most time tracking solutions I found were too heavy and expensive.

A few days ago I stumbled across a new webapp called Freckle which seems to hit the sweet spot between features and usability. All you do is enter a time (or use their timer bookmarklet), what project it was for and a bunch of tags and it gives you a set of fairly decent analytics. You have to pay for it and I just started a free month long trial. If I find that it actually works well, that I use it and that I’m getting more stuff done, then it’s a keeper and I’ll gladly fork over the $12 a month and wish them well.

Agile daily productivity

The agile development methodology eschews large complicated schedules and project plans in favor of smaller chunks of work, quicker feedback and review and greater flexibility. I’ve been an applying a similar system to my own daily workloads and it seems to be working, but I’ll be enforcing it better. Being a college student it makes absolutely no sense for me to have long schedules because every day brings new challenges (homework, tests, projects, random coffee drinking sessions) and any long-term plan would be shattered in a day. Instead I’m using a dual system: due dates to make sure I’m on track with my long term goals and shorter lists of daily and weekly tasks that need to be done. I’ll try to set aside large blocks of time for things like homework sets and fill in shorter blocks with reading and writing. I’m also consider doing weekly reviews but I’m not sure how much of a value that will provide to me right now.

All that probably seems like a lot and taken individually it is. But I’m going to try to collapse/multiplex them into a congruent workflow where I schedule with flexibility in mind. Ideally, I’ll spending large blocks of time on homework, programming and content creation with shorter blocks on light reading, practice writing and random errands that pop up now and again.

In 30 days my free trial of Freckle will run out and that’s also when I’ll sit down, take a deep breath and see if all this actually worked or not. If it doesn’t work, I’ll try to see what it failed and see if I can fix it. Even if it didn’t work, I’m sure there will be places to tweak and improve. And though I’m tired from having written this (and from everything else I’ve done and need to) I feel pretty excited for this month.

I’m leaving Google Tasks

Over the last few days I’ve had a significant shift in how I view my personal productivity and time management. My new way of looking at personal work habits is something that will take a separate article (and will probably go in the Essays section of my website) but one of the major outcomes of that is that I now need slightly different tools to manage my time properly. I’ve never been a fan of big complicated time management systems or programs; even full blown GTD is overkill for me. I like simple tools and for a long time I used Google Tasks, but I suddenly realized yesterday that Google Tasks didn’t cut it anymore. Here’s why.

Google Tasks is a very simple application. It lets you create tasks and subtasks, put in descriptions, add due dates and not much else. There is no taggin or organization into projects (though you can multiple lists) and as far as a I could tell, no reminders either. The people actively using Tasks use it especially because it is a lean, no-frills tool. That was also why I used it. I tried multiple lists, but found myself never actually switching to the other lists. So I stuck to using just one big list, organized into ad-hoc large projects under which I placed all the smaller, discrete tasks. However, I came to realize that while Google Tasks isn’t a bad application by any means, it is a bit too simple for my needs.

Before I go on, I need to say a little about my new system. I realized that strictly scheduling blocks of time for tasks simply doesn’t work for me, especially if it’s for stuff I don’t enjoy doing. I’ll procrastinate until the time passes and it’s time to do something I want to do. As you can imagine, this isn’t productive at all. For my new system, I’m borrowing a popular computer science concept: the priority queue. Instead of scheduling and blocking, I just keep a list of things I need to do, ordered by priority. I then work on things on that list, starting with the higher priorities and working my way down (but not necessarily in strict order). This way I get things done, but avoid the stress and guilt that comes from trying to stick to a schedule but not being able to quite make it. It’s worked quite well so far.

If I’m to use technology to help me, then I need a priority queue to store all my tasks. I also want to add some kind of tag data so that I can separate tasks into groups of similar tasks (and potentially knock them all off together, even if they aren’t near each other in priority). Unfortunately, Google Tasks fails on both counts. There is no concept of priorities and though I can manually reorder tasks, that can get tedious if there are lots of tasks of different priorities mixed together. There is also no way to tag or group tasks. Creating subtasks is possible, but that then rules out reordering them on priority. From past experience, I know I forget even high priority tasks just because they are grouped with other tasks that happen to be at the bottom of my list.

So after a good few months, I’ve decided it’s time to bid adieu to Google Tasks and search for something that is a bit more powerful. I wanted something web based because though I move around computers a lot, I’m always near an internet connection. My friend tycho garen suggested using Emacs Org-mode with Emacs by connecting to my server via SSH. While that’s certainly a possibility, it’s something that I’ll put off for experimenting with till a later date (and I’m not always on a machine with a SSH terminal). In the future, if I find myself on a Linux or even OS X machine for extended periods of time, that’s definitely something I’ll try out.

But for the time being, I’m moving back to Remember the Milk: a web service that I’ve used on and off at various times in the past. Remember the Milk isn’t perfect but it’s good enough to get the job done, as long as I exercise some caution. For starters, there are both lists and tags. A task can only be in one list at a time but can have multiple tags. Previously I used a number of different lists: one for academics, one for coding, one for writing etc and used tags for individual projects under those broad headings. But this time I’m simplifying. I only have two lists: one for tasks that will be done right now and in the near future and another one for things that I would like to record, but have no timeline for. Everything else is sorted by tags. As for the actual priority queue, RTM offers three priority settings and automatically reorder tasks according to priority. I would really like more priority levels or manual reordering, but it’s good enough to start with. I’ll see if I find it too limiting after a few weeks.

RTM’s interface is really well thought out, giving easy access to all the important features. I particularly like the smart add bar and the nice large tag cloud off by the side which will make it a snap to view my individual projects. I wish there was a way to complete a task with one click, but thanks to some awesome keyboard shortcuts, that’s not much of a problem. Even though I’ve already been using it for a evening, I can find myself really getting used to it. RTM has a bunch of other features (including integration with other services) that I’ll be looking into as well (especially adding via Twitter) but since I plan on keeping things simple, I probably won’t be playing around too much.

As an ending note, I’d like to address the idea of switching services. I know that as power users, we’re often early adopters and love trying out stuff. Shiny toys are fun to play with. But constantly switching to something new means that you spend more time learning new tricks rather than putting those tricks to work. At the same time, if some tool really isn’t working with your workflow you shouldn’t hesitate to move to something better. It’s not easy to find a balance between moving around and settling down. I think that evaluating how things are working every few months (once a semester if you’re a student) is probably a good way to keep the balance right (in addition to keeping an eye on how productive you actually are).