SVN vs. Mercurial vs. Git For Managing Your Home Directory

For several years I've kept the bulk of my home directory in a revision control system. This allows me to synchronize my files across the two machines I use commonly, keep a backup on my home NAS box, and have complete revision history of files.

There's a price, however: the SCM keeps metadata on my machines, and this can add up. Plus there's the time needed to commit files. When it became clear I needed to switch away from Subversion because it doesn't cooperate with iWork files, I decided to look into alternatives.

Mercurial and Git appeared to be the best solutions, but there's quite the holy war going on between the two. Git's confusing, Mercurial is slow, etc.. I decided to run some of my own tests and let the data speak for itself.

Update 2008.04.25: Adding results for Bazaar.

Continue reading "SVN vs. Mercurial vs. Git For Managing Your Home Directory" »

Build Your Own NAS/Subversion/Web/Anything Micro-Server

linkstation photo

2010.01.27 UPDATE: The LinkStation developer community appears to have moved to here.

I've long desired a miniature file server that I could put on my home network, always on and ready for my machines to synchronize with at any time. But not just that, oh no, my little box must do everything:

  • Handle Mac and Windows clients.
  • Mac support must include resource forks and long, oddball filenames.
  • Be a Subversion server for efficient revision control of all types of files.
  • Maybe be a web server (never know when you might need one of those).
  • Streaming iTunes server would be cool, too.
  • Have ssh/sftp access so I can build and install anything else I desire.
  • Have enough disk to be useful, but also be small and quiet.
  • Oh, right, it's got to be super-cheap, too.

Daydream perhaps? No way. It turns out that a bunch of the home NAS (Network Attached Storage) boxes currently for sale run Linux, and most of them are easily hackable to open them up for general-purpose use. You could also use a junker PC for this purpose, but see my "small and quiet" qualification above.

This article describes my choice of NAS box, hacking it so I could install custom software on it, and setting it up for most of the uses listed above. It assumes a general familiarity with Linux and building applications from source code.

Continue reading "Build Your Own NAS/Subversion/Web/Anything Micro-Server" »

TextMate Subtle Color Theme

screen shot

Here's a theme I created for the excellent text editor TextMate. The design principles for my theme:

  • Black on light yellow background for maximum contrast.
  • Easily visible selection highlight (bright yellow).
  • Minimal other colors; only language keywords (blue), strings (green), and symbols (dark red).

Download: To install, just unzip and double-click.

The Kinesis Contoured Keyboard and Dvorak Layout

When I first moved to Silicon Valley I worked crazy hours. I loved my job and I needed to prove myself, so I was coding like crazy. That translates to typing like crazy, and it wasn't long before that caught up with me. This article covers my ensuing experience with ergonomic keyboards and the Dvorak keyboard layout.

Rewind to 1995. I could type pretty fast on a normal keyboard. My touch typing was not textbook proper, but hey, it worked fine for me. I started getting worried when I would go home and I could still feel the tension in my forearms and wrists. I figured that if I was going to be a programmer geek for any decent amount of time, I'd have to fix those problems pronto.

I got to talking to Eric Townsend, a coworker of mine who owned the wackiest keyboard I had ever seen. It was a Kinesis Contoured keyboard. I found myself fascinated enough to drop the $300 (at the time) to get one myself.

Kinesis keyboard photo

Continue reading "The Kinesis Contoured Keyboard and Dvorak Layout" »

Tips for Apple Backup 3

A couple tips for using Apple's Backup 3 application:

  • If you're recovering a system from scratch (i.e. you wiped the disk, reinstalled the OS and Backup 3), and your backup is stored across multiple discs, you need to put the last disc in first. If you put in the first disc the restore window will show the backup plan's name, but no files to restore.

  • If you try to restore by right-clicking a backup volume (e.g. a .FullBackup file), clicking "show package contents," then navigating to the .sparseimage file and mounting that, you will lose resource forks. Many files these days don't have resource forks anyway, but there are a bunch of holdovers (like some fonts and applications). You won't know the damage until you try to use the files.

(Most geeks can probably guess the process I went through to discover these things the hard way.)

Continue reading "Tips for Apple Backup 3" »

Integrating With Your Web Browser

I've seen many arguments over the value of, but the most common skeptic's question is, "why add a layer of hassle when my browser has built-in bookmarks?" I won't get into the argument over why or why not to use, rather I want to point out how to use with your web browser in a nearly seamless fashion.

Here's a step-by-step guide to integrating with Firefox (all major platforms), Safari (Mac), and OmniWeb (Mac).

Continue reading "Integrating With Your Web Browser" »

Turbo-Charging the Dymo LabelWriter

Dymo printer photo

I found some Dymo LabelWriter 330 Turbo label printers on super-sale at my local office supply store, so I snapped one up. That afternoon I discovered just how slick the little printer is. The next morning I went back and bought another one for the office.

Following is a quick how-to on using this printer super-efficiently on a Mac OS X system. I also explore using Quicksilver to speed things even more. Some of these tips may apply to the Windows software, too.

Continue reading "Turbo-Charging the Dymo LabelWriter" »

Moleskine Memo Pocket Book

For the past 6 months I've been using a Moleskine Memo Pocket book (large size) to carry around 3x5 index cards with notes and action items. This is similar in concept to the Hipster PDA, just with 6 pockets instead of a binder clip. I've organized the pockets as follows:

Moleskine Pocket Book

Pockets are labeled: In, Actions, Someday/Maybe, To Elsewhere, Trash, and Blanks. The follows the "Getting Things Done" paradigm. 3x5 cards that need further review go into "in." Those with actions already attached go straight to "actions." Action items (or ideas) that aren't especially important, but important enough to carry around, go into "someday/maybe." Items needing filing at home go into "to elsewhere." When I need to trash a card, I stick it in "trash" because I generally want to recycle the card at home or shred it. And of course the "blanks" pocket holds blank cards.

This system has worked pretty well. I use it mostly for my personal action items, but also for work when I travel. (At work I have a desk-based setup.) If I'm at home and I have a work idea, I jot it on a card and put it in the "to elsewhere" pocket. The only trick is remembering at work to go through the "to elsewhere" pocket and pull out work-related stuff. Likewise, I often forget to pull out items for filing when I'm at home.

Another variation on this idea would use the pockets in a location-based manner, e.g. label the 6 pockets:

  • @ work
  • @ home
  • @ computer/net
  • @ phone
  • file/trash/shred
  • blanks

This is perhaps a more purist GTD approach. Using this system, when you get to a location and start doing work, you first dump that pocket's contents onto your desk. This prevents you from having to sort through the "next actions" cards looking for actions that can be done now.

GTD and Status Reports

Most engineers (and probably others) need to file weekly status reports. The format of my reports is:

  • Things done this week;
  • Things to do next week;
  • Outstanding issues that may need management attention.

This used to be a hassle for me since I often couldn't remember everything I'd done in the week. But I had a revelation while continuing to read Getting Things Done. May I suggest the following method:

  • Create a folder or tray called "For Status Report."
  • As items from Next Actions are completed, move them to For Status Report.
  • If you have issues that are non-actionable by yourself, but management should know about them, file those in For Status Report.
  • Every time your report is due, your "things done this week" section is in the folder. (Also review your email for the week.)
  • As you pull items out of For Status Reports to type them up, trash or file them as appropriate.
  • Review your Next Actions for the "things to do next week" section.
  • Any issues for management attention are already in the folder, too.

Needless to say, this becomes a subset of the GTD weekly review. I'd say "you kill two birds with one stone," but I'm too much of a bird lover to use that phrase. (Can anyone suggest an alternative phrase?)

Engineer's Alternative to Moleskine

I know this may be heresy to the Moleskine-loving crowd -- of which I'm an unashamed member -- but I have an issue with Moleskine notebooks, and an alternative solution. I'm a programmer, and my company has been getting stricter about using proper engineering notebooks. These are notebooks that can stand up as legal evidence in defense of a patent, or defending accusations of patent infringement. The physical requirements for such a notebook are simple: pages must be bound, non-removeable, and numbered (not hand-numbered).

Being an avid Moleskine customer, I notified Moleskine US suggesting that they make some models with numbered pages. No response. So...gotta go somewhere else.

Continue reading "Engineer's Alternative to Moleskine" »