I used to doubt that the browser was becoming the new desktop. I mainly used the GMail web interface for its portability, not its usability. That is, I liked being able to access my email from anywhere, and I didn't really notice a difference in ease of use between desktop clients and webmail. If anything, back then the webmail interfaces were a definite step down. Web apps were clearly still far from replacing desktop apps. But recently I decided to try a little experiment. The results have since overturned my skepticism.

I tried switching to Thunderbird a few weeks ago. Firefox was being its usual pig-slow self, and I had a lot of things going on, so I could no longer afford to wait 3 minutes to switch between tabs (I'm still on a PPC Mac). So I did it. I used a desktop email client again for the first time in about a year.

But now, after a few weeks of using only Thunderbird, I'm back on the browser. And not because my email was being scattered about on different machines. I switched back purely for usability reasons:

  • Search was more accurate and faster in the GMail web interface.
  • It seemed easier (believe it or not) to lose a draft in Thunderbird than in the GMail web interface with it's auto-save feature.
  • Switching between rich text and plain text in the desktop client was next to impossible compared to the simplicity of the web client.
  • Without the conversation grouping feature of the GMail web interface, I felt a lack of context. I had become so used to this Gmail feature that it was disorienting to read email without it.
  • I had to sacrifice gigs of hard disk space after POP'ing my GMail inbox down into Thunderbird.

In fairness to Thunderbird, it is a great email client. If I had to use a desktop client, it's the one I'd use.

At this point, I should probably list some of my gripes about the GMail UI, but, oddly enough, I don't have any. I only have gripes about the GMail deilvery platform (aka, the web browser).

What I really want in my email client is stability. A stable email client should be immune from whatever crap may be running in other tabs in my web browser. A stable client should not give me the Mac beachball when I want to switch quickly between inboxes (browser tabs, in this case). So what I really want is a dedicated client program. A fast browser that contains only my GMail accounts. Something I can "Apple-TAB" directly into.

I googled for something like this today and found this simple WebKit-based browser. It is almost exactly what I'm looking for. The only thing I'd want to change is the ability to have multiple GMail accounts open in separate tabs. But the simplicity of a browser that is dedicated to email is surprisingly refreshing. In fact, I was so compelled by this concept, I even broke out my Cocoa/Objective-C book this afternoon and started playing with the source! (And I got absolutely nothing done, but I had fun re-learning Xcode.)

An old movie

07.11.07


Circa 2001...

Most people who have their own small business end up giving a lot of their free (un-paid, that is) time to a task they were never formally trained to do: bookkeeping. Some people are naturally good at it and find it a nice change of scenery from their main business, others hate it with a passion. Personally, I fluctuate. One day I find myself leaving the office with a great sense of satisfaction, knowing that I just printed my own paychecks and closed out another month's worth of work in such a way that I won't be scrambling come tax time. Another morning might find me, smoke billowing out my ears, cursing a blue streak about an entire morning of work lost to bitch-slapping Quickbooks into submission (or QB bitch-slapping me, which is more often the case). Lately, the thing that's been making bookkeeping a real pain in the ass for me is the mundane, everyday task of keeping count of my hours.

When I switched to Quickbooks early this year for all of my bookkeeping, I also started doing invoices in Quickbooks. Previously, I had invoiced by hand, keeping count of my hours in a text file. To make invoice generation as simple as possible in QB, I also tried using the weekly timesheet feature. Over the last few months I've come to hate this feature.

To use it, I have to interrupt my workflow, go to another window, do a bunch of slowpoke clicking and key-poking.

That sort of interruption is costly for me, especially since, as a contractor, I try to keep track of my hours as exactly as possible. If I have to switch off a project for a five minute phone call, I don't want the client to pay for that. Seriously. I want to be able to take those five minute phone calls without having to spend another five minutes inside Quickbooks recording the fact that I stopped work for 5 minutes.

So today I wrote a little program that lets me keep my hours the way I like, in a text file, while making it very easy to do a monthly (or weekly or bi-monthly) invoice in QuickBooks.

Here's how it works.

  1. I keep a little text file in ~/.hours/hours.txt. It's format is something like this:
    Monday 7/2   # Bug-fixing and feature X
    9:04 - 11:37 #  Destroyed bugs 217, 381, and 113
    12:02 - 6:23 # Implemented the hell out of feature X
    
    Tuesday 7/3 # Unit tests
    9:03 - 9:07 # Sent quick email 
    3:23 - 5:30 # Wrote some unit tests for feature Z
    
    ... and so on

    I like to invoice monthly, so make a new one of these every month, and archive old ones as I enter a month.

  2. Whenever I need to find out how much to invoice, or if I'm curious about whether I've been slacking this month, I run my little hours calculator program: Hours Summary
    I can even give a rate to see how much money I've earned: Hours Summary with Rates

Before I took the morning off to write this little application, I did play around with the many time clock apps available. None of them ever really fit into my work flow, as a programmer. It sounds so silly, but I was always frustrated with having to leave my editor to record a new couple of minutes or hours of work performed.

With this text-based approach, I just keep a link to my current hours.txt file in my project (whether it's in TextMate or IntelliJ or Vim). Then I just tab over to that file, enter in a line and forget about it: How I record my hours

If you want to experiment with keeping your hours this way, again, here's the program. (If you find this useful, please drop me a line!)

I'm enjoying the switch to a DRb-enabled Ferret, thanks to Jens and acts_as_ferret. Specifically, there is a feature in AAF whereby you can funnell all of your searches and updates from multiple processes into a central ferret_server, a DRb process that does all the business of updating and searching your indexes. I think this feature has actually been around for a few months, but this is the first chance I've had to use it.

Having a DRb ferret server is especially useful to me because, with TravelersTable.com, we have cron jobs that need to run off-line and update indexes. Before switching to ferret_server, I always ran into lock contention issues while updating a Ferret index outside of the main Rails app. We would have to kill our Rails app, make the index updates quickly (or at some time in the middle of the night when no one noticed), and then re-start the app. So far, using ferret_server, I've been able to update the index without disturbing the app, which is really very nice.

Finally, if you're going to make this switch, one thing to be aware of is a sorting bug. For the full explanation and a patch, see this post by Mike Mangino.