Getting Things Done: The Pomodoro Way

October 17th, 2010

A few days ago I wrote about procrastination and by coincidence I came across an article about changing your working method to embrace the interruptions, instead of trying to find long stretches of concentration (‘the zone’). It is a nice read, however, more importantly in the comment section I came across something that really appealed to me: The Pomodoro Technique.   I had seen it before, but it didn’t jump out to me at that time.

The basic idea is:  work for 25 minutes on a single task, with a timer ticking back the time left  and then take a break. This is augmented by a few other important steps, such as: noting down your distractions, evaluate them only after the 25 minutes are up and crossing of the completed intervals per task.

As I don’t have a proper timer yet, I looked for a software one, that works under Ubuntu as well  and came across:  Focus Booster.   It makes the ticking sound and also very nicely automatically starts your 5 minute break timer after time is up.

I just started using it, so I’ve only done a few of these ‘Pomodoro’ intervals, but I feel very confident that this will actually work as it makes you very aware of the distractions you need to avoid/delay  and the time you have available.  Starting the timer gives a feel of commitment about doing something NOW instead of  in a few minutes. Furthermore, having a timer tick back, give you back a bit of that deadline stress that makes you feel productive, without the disadvantages of real deadlines. And, not unimportant: it feels good to cross of real productive time.

Linux on the Desktop: Eventual Success

October 13th, 2010

I wrote about trying out Linux (Ubuntu) on the desktop before.  That attempt failed in getting my video card drivers to work properly.  However a few months later,  I got my windows PC infected with a virus ( just by passing by on a website)  and decided that was it.   I installed Ubuntu on my laptop (Dell D630) and have been using it every day since.

My hardware was very well supported,  I had no problems whatsoever, so that was a good start.    Furthermore, it provides me with an environment similar to our webservers and I have most of the tools I used:  jEdit, Photoshop 6.0 (using wine), skype, Firefox, TweetDeck and an SSH client.

There are still a few things though:

– It actually feels slower than Windows, especially Firefox (probably more optimization as gone into the Windows version as it is more wide-spread)
– Keyboard shortcuts are not very well standardized, so I find myself using the mouse  way to often
– There are some GUI things I’d like to be much simpler (like  enabling/disabling an external monitor)

All together I’m quite happy I made the switch.  I tried it many times before over the last 14 years ( I have a book and disks from 1996), but only now it has really became a viable alternative.

Deadlines Are Killing

October 13th, 2010

My whole life I’ve been trained in sticking to deadlines.  School and University is nothing but doing a reasonable amount of work  for an event fixed in time (tests,  reports to hand in, etc)  Which, if you are anything like me,  means  procrastinating until the exact moment it can’t wait any longer an then work very hard.    Procrastination is rewarded:   it gives you more free time  and good results, so by the time  you get to your graduation, it has been perfected to find exactly the minimum amount of time needed to still get good results.

However, this skill gets you nowhere on real projects.  Projects like  your graduation or  developing a new product, where there is no fixed ending and you really want to get done as much as possible, as soon as possible.  ( I can probably make a todo list that fills the rest of my lifetime )  Of course there is the fun/interesting stuff that will never get you stuck, however every project (even the most fun ones)  have those tasks that you just need to get done. Not being able to do so in a timely manner is very frustrating.

The first obvious way to try and fix  this, is to create artificial deadlines, to get back that feel of urgency. However, deadlines that you set yourself don’t work, I’m just way to much aware how arbitrary they are.

Furthermore, on real projects, the amount of work is not known in advance. So there is no way to determine when to start to finish ‘just in time’. On the other hand lots of stuff you delay, might take far less time than you expected.  (You actually spend more time thinking about how much time it is going to take)

Procrastination is also closely related to getting ‘into the zone’ (Read: Joel Spolsky on that topic), but to be fair,  there are also lots and lots of activity that do not require any ‘zone’ at all. So, I feel a strong urge to  ‘solve’ this productivity mystery.   One of the obvious choices is reading about the ‘getting things done’  method. However I’ve never succeeded in making it work for me:  Writing everything down in a system, makes it even more overwhelming then just managing it in my head, as my brains are a lot better capable in hiding the ‘someday/unimportant’ stuff that I come up with.

I’m still in doubt though whether this is not just your brain telling you that there is only a fixed amount of productive time and the idle time in between is just needed to solve complex problems. However, there are a few things I did find, that do help:

  • Committing to a task, by telling someone that you will do it: ‘right now’.  (Not some time in the near feature, really: NOW)
  • Do another task instead, that you feel really passionate and confident about, to get going
  • Split up your tasks into such small subtasks that it’s impossible to not finish it (So every time you do any work, you actually finish something, instead of going from   ‘busy’ to ‘still busy’)
  • Work together on a project,  you can keep each other going  ( I believe that is one of the biggest arguments in favor of pair programming)

Are you a procrastinator as well?  And what do you do about it?

A New Office Chair

September 19th, 2010

I’ve decided that I no longer like my  10 year old Ikea office chair.  So now I’m looking for something new and better. Unfortunately there is no clear winner,  for all chairs there can be found very positive and very negative reviews. Furthermore,  just sitting in a chair for a few minutes probably won’t tell me whether it is any good in the long term. And a pleasant chair, might not even mean it is actually good for you.  Anyway, I’m still doing research, which I’m publishing on a separate blog: High Back Office Chair .   Some chairs I’m currently investigating:

  • Aeron Mirra
  • RH Logic 400
  • Humanscale Freedom
  • Vitra Headline
  • Ikea Verksam  (as the reasonable and cheap base choice)

Suggestions are more than welcome.

5 Bootstrapped Startup Reality Checks

September 22nd, 2009

If you’re in a bootstrapped startup,  looking at your bank account probably isn’t the most cheerful experience. You are probably still investing all that comes in and maybe even a bit more. So how do you know that you are still on the right track?

1. Are we there yet? Are you running a profit?  If you don’t know… do your homework and get back here ASAP.  If you are making a profit… why are you even reading this article?

2. Is there a future? So you are not running a profit… but could you?  If you would cut all development and investment related costs  and  would coast with whatever you have right now…  Would there be enough money for you to sustain this operation? If so: you are already investing in making more profit in the future, make sure though that the extra investments really contribute to your goals.

3. Can we make it? If your revenue is not high enough right now, you are walking a thin line. Is there enough money expected to bridge the gap?  Find out when you can get to #2 and sum all losses you expect to make in between.  Do you have that kind of money or can you get it?  This may be the time to adjust your plans,  either cut some costs or get some extra money.

4. Does it matter? What if you would sell everything right now? Would it be enough to cover debts and the income you missed?  If so, maybe it’s good to stop bootstrapping and get some money to prevent this value you’ve created to be wasted.   Keep in mind that you don’t want to wait till the last minute, because if you’re out of options… you are going to be a bargain.

5. Do you love it? Maybe your business isn’t that dependent on money, still, you are investing a lot of time in it, right?  If it’s not worth the money, at least make it worth for yourself.  Is this really the thing you love most to spend all your time on?    If you feel committed to a project you don’t really love anymore,  find someone who can take over,  or change it so that you can love it again.

SEOmoz Pro Account Review

July 26th, 2009

SEOmoz seemed to have some nice tools,  so  we decided to give it’s PRO account a try.     And indeed the tools are quite nice.   I especially like the idea of Linkscape and  Ranktracker.    Linkscape shows you exactly what pages are linking to your site.  And better: you can easily filter them to see which do not come from your own website, which ones have  nofollow on them, etc.     Ranktracker does what you expect from the name:   track  search engine positions for different keywords over time.    There is a bunch of other tools as well, but those are not really impressive and maybe even a bit outdated.

However,  the site and tools are SLOW,   a significant portion of my requests  fails or take ages.     I’ve tested it during multiple days, so it’s not a one-time thing.    In my opinion  as a programmer I’m better of reproducing the tools with some small scripts,  because unresponsive sites really annoy me, especially if I pay $79 a month for them.     I do not think  I lost that first payment though, because there is also some great paid content over there.  But that’s not nearly enough to justify paying  $79 every month.

An Idea I do like it that I can take a questionnaire after I cancel  and get another week for free.   Because on our sites people usually don’t want to take the effort to tell us why they cancel.

Evaluating Basecamp

June 30th, 2009

At MovingLabs we really believe in creating all our tools, but as we need many, most are not really finished. Fine for us, but not so much if we need to collaborate with others.  We do have our own project tools like  TeamSpinner and FlexLists, but not everyone likes them in their current state.    Therefore we decided to sign up for the 30 day evaluation of Basecamp. Something that receives so much positive attention must be spectacular , right?

What I expected,  from what I’ve read and heard, was a clean and simple interface where those parts that are there are quick, effective and perfect.    The clean and simple part is definitely true,  there is no visual waste and I can quicly find stuff.  However speed, effectiveness and perfection are the things that I can’t find.

The first thing I noticed is that it’s actually quite slow,  maybe because it’s servers are in the US, but in terms of speed it feels like the  Java Enterprise intranet application that I worked on years ago.

Second thing is that it still has many rough edges that I would have expected to be fixed by now:

  • No error or resubmit, just forever ‘busy’  when the connection drops while doing an ajax submit ( Gmail set the standards high on this stuff)
  • The main page title is not clickable
  • On the message entry form there is not a hint that I can actually use the wiki like syntax
  • I can’t click on users anywhere to get some details about them, like which projects I share, what their e-mail is,  etc.

Finally I just miss a very important thing:  I want to set my todo’s  to  ‘busy’ .   I’m just way too used to doing that.

Besides these points it does work fairly well, I do like the way it takes into account that you want to collaborate with multiple parties.  However,  it’s not nearly good enough to cure the  ‘not invented here’ feeling.  Luckily the party we tried to collaborate with agrees with us, so seems like we need to fix TeamSpinner after all…

Slowing myself down

May 1st, 2009

My previous post was a bit generic, but now I’ve encountered the perfect example of how building a Framework slows you down:

Lets say we are building basic user account confirmation. In a plain-php way I would write:
mail($email, “Your account confirmation”, “….”);

Now in our framework it has evolved to something like:
mail($email,  $settings->getSetting(CONFIRMATION_MAIL_TITLE), “…”);
and the actual text is loaded from the settings table in the database (so our non-tech partners can edit as well).  So all is now configurable and nice and quick and smart right?

NO, because in a new project, the database is clean, so I get a nice “confirmation.mail.title setting is not defined”.    And now this is where I slow myself down:  Instead of just adding this entry to the database I think:  hey, I shouldn’t get this error, this should have a default setting.   So now instead of having to write this one simple line of code I have to:
– find a way to store all default settings in some file in the framework distribution
– adjust the settings mechanism to use those defaults if there is nothing in the DB
– retrieve all data in the settings table from a previous project and store it in the file

And as soon as I have this thought cross my mind, the focus on the original project is gone and we are back at the infinite task of the perfect framework.

Reusable dreams: worse before better

April 29th, 2009

If you develop a lot of projects and are a bit like us, you will recognize this: the reusability dream.  It starts of with a little itch that you are not taking advantage of the knowledge and work in the previous project.  You start with some simple database handling and utility functions and all is fine. For a while…

The next stage is actually creating reusable functionality….   The reason is that you know it will haunt you do the same thing in multiple projects  using copy/paste  as it will need to be fixed some time.

This is also the point where your library turns into a framework: Everything needs to be done in a particular way to fit in your nice reusable scheme of things.  Your project no longer just uses a few nice functions,  it completely depends on it.

As I’ve written before the reason I like plain PHP is what I call the notion of proportional time.  The time you spend is proportional to the complexity of the feature you are building.

The problem with frameworks is that they have smart things built in. The framework makes it easy to do stuff that usually takes much more time. However, it’s almost never smart enough. At this time your framework has evolved so much that every time you will have to pick your poison: either go through a painful adaptation to your framework OR recreate it without your framework and go through the painful tinkering an bugfixing that’s all built into the framework… how frustrating.

In our case this stage expresses itself in SLOW development.  Every small step forward becomes way more complex than the actual feature that you need to built.  It’s completely against the principle of proportional time.  You are locked in your own Framework.

Now is the time that you need to consider whether or not: worse before better applies or that it’s just going downhill.    Two years ago we had a framework where the latter was clearly the case and we just had to drop it.   The problem with it was that it was really an all-or-nothing approach.  In our new framework we can easily take just a step back and use only part of the framework until we have clear ideas about the next level.   We still experience the  locked-in situation from time to time, but it’s much easier to get past it.

Our path to Framework enlightenment has the following steps:

  • No collisions: make sure that the library/framework does not collide with other code, this will mean that you can drop it into an existing project without the need to rewrite it first
  • Layers: create layers of tools, functions and abstractions. If one layer is to restrictive, you can at least use all tools from the other layers below it
  • the framework needs to be out of the way:  You must always be able to do things outside the framework and still access it’s data.
  • Everything needs configuration and even more important: defaults
  • Override everything: be able to replace small parts of functionality without the need to recreate it completely.
  • Constants do not exist:   at some point you will want to be able to manipulate it with code
  • Move everything to the framework: if you want to reuse it, don’t create it inside your project directory
  • Have a (documented) process (including best practices) to create new things for and using the framework.

We are not there yet, but are confident that this time that the benefits outweigh the extra effort.

Idea #3: FocusMe

April 27th, 2009

Sometimes I have a problem focusing on the work I’m currently doing.  And right at that point it’s very easy to wander and go browse for some news, get your email, etc.      Now the quick solution is:  turn of everything and shut down your internet connection.

It really helps sometimes, but most of the time it doesn’t… Why?  I need internet to work:

  • synchronize code with the SVN repository
  • work on a website that’s on a remote server
  • search for documentation

So what I would really like to have is some  ‘work mode’ tray icon that would block everything except for a few things that I have allowed.   It would be even nicer if I could define different contexts that would allow different websites and connections.

Soon I will write a bit about the extended version of this idea that does a bit more than managing access to websites.

About this series: I believe execution is more important than the initial business idea.   At the same time  I have a lot of those ideas, that will never be executed by a shear lack of time.   That’s why I will start something new on this blog:  I will pitch my ideas here.    If you think it’s a good idea or know a service that already does such a thing, please leave a comment.