Pure Mac

Posted in opinion on June 12th, 2009 by ben – Be the first to comment

This week, I’m a happy geek: I was able to persuade my boss to buy me a Mac as my new workstation. And although Apple freshened the notebook line in interval between the order being placed and it actually arriving at my house, I’m very happy with the 17″ MacBook Pro as-is. But the point of this is not to get into the specs or version envy, it’s about why I’m so passionate about it being a Mac.

High end, portable power. 32-bit windows has an upper limit on usable RAM at ~3G. Our development environment isn’t that fat yet, but it’s only getting bigger. Running Eclipse, Tomcat, MS Office, InDesign, MySQL, a couple web browsers, and it’s quickly approaching the point where you start taking a huge performance hit for paging your apps on/off disk.

The only answer is to get into a 64-bit OS to address more memory. I don’t want to fight with 64-bit windows, since I’m not confident in all the compatibility stuff (notably our VPN software). Apple has successfully made the switch between CPU architectures and OS architectures multiple times, so I’m confident there won’t be 64-bit issues with the software. The 17″ MPB can hold 8G, and I plan on using it.

The alternative is Linux, with the windows-specific stuff running in a virtual machine. That environment, however, would be even more “out there” in our company – at least the Mac has some core use the publishing areas.

Better productivity software. Your computer workstation is your main line to getting things done, and it should support you in that by getting out of your way. I haven’t seen anything in the Windows world that can rival the ecosystem around AppleScript and application interoperability that is designed into OS X. Specifically, I plan on becoming a Quicksilver ninja. Quicksilver is to computer productivity as J.S. Bach is to music: every time you sit down with it, you can find a new nuance that makes you appreciate it more. The best resource I’ve found, even though it’s completely dense,  is a PDF enumeration of all the features and plugins.

The other huge productivity win is Spotlight. Built-in full text and file search across the entire machine is like having a private Google. I admit, I never tried Google Desktop,but I’m more confident in Spotlight, since it’s built-in to the OS, and developers are encouraged to make their files compatible with its indexer. Entourage (aka Outlook for Mac) by default extracts copies of all attachments to a cache in your Documents folder, enabling Spotlight to pick them up. I’ve been able find attached file content in single-digit seconds this week, a task I’d often downgrade to a manual filename search, taking at least a minute.

And then there’s OmniFocus, with its rich iPhone integration. I’m just getting started there, so I’ll have to save that for a future post.

I’m also banking on OmniGraffle, an alternative to Visio. A picture is worth a thousand words, and the better looking your picture, the more it’s taken seriously. The defaults in Visio are just ugly, reminiscent of a 80’s flowchart stencil barfing on your paper. OmniGraffle, on the other hand, has gorgeous defaults, tasteful shadows and curves that let you create a picture worthy of your ideas. If the defaults aren’t enough, check out the user contributions at Graffletopia.

Honorable mention:

  • UNIX. The power to drop down into a command line and stitch together a series of commands for a complex search or file manipulation is unrivaled. Among geeks, this counts as productivity tools
  • Time Machine. How many people backup their laptop regularly, or go to the trouble of buying decent backup software? Now, I just plug in an external disk and forget about it.
  • Battery life. How much time is wasted in meetings crawling under the table to a power strip? I’m consciously going to leave power supplies back at the desk: walk in and flip open the lid, ready to start.

I’m not even going to try and debunk the “macs are more expensive” myth. Given all of the above, even if you thought there was a premium for the Apple brand and hardware sexiness, the delta can still be justified by all the other gains.

Fixing the blog subtitle

Posted in meta on January 2nd, 2009 by ben – Be the first to comment

An early comment in this blog by my dad took issue with my subtitle, “Applying and using technology when you lack the desire or resources to be an Alpha Geek.”  Specifically, I can’t really blame a lack of resources on my non-alpha geek status.  Yes, I suppose if I wanted, I could certainly get to the top of the geek toy ladder.

(Perhaps I was thinking of the tautology of “time is money,” because with two young boys around, I don’t value spending the hours it takes to fiddle with the new tech.)

Anyway, the first post covers my thoughts on being a Pragmatic Geek.  To me, being Alpha is about having things - the latest gadget, software, or programming framework.  And from there, it is assembling those things into a broader digital life.  Using that definition, I don’t qualify.  I had my last cell phone for almost 3.5 years, before jumping on the iPhone bandwagon (1.5 years after it launched).

However, before I get nipped for false modesty, I did a little research on the term “alpha geek,” and maybe I’ll change my subtitle even more.  I do enjoy keeping an awareness of the trends, even if I don’t jump on them with time or money.  So I’ll leave it up to the reader to form their opinion of what tier of geek I am.  I’m just happy being a Pragmatic Geek.

Eating the dog food

Posted in diary on January 2nd, 2009 by ben – Be the first to comment

I reached a milestone today with my GTD project: it became usable enough that I can use it to track what I’m working on for its development.  In programmer’s parlance, that’s eating my own dogfood.  Granted, the food tastes pretty bland and requires extra chewing, but it’s edible.

A lot of personal projects are born out of the desire to “scratch an itch,” and this is no exception.  I’ll probably write more in the future about other itches, but for now, I’ll talk a bit about how this scratches my multitasking itch.

I am a vicious multitasker.  Some folks call it a blessing, others a curse.  I believe it’s driven by my desire to constantly be doing something that I will rarely allow myself to sit and be idle if my current task is waiting on something.  Things like long compiles, people typing slowly into an instant messaging window, or waiting for the microwave to heat my coffee will all cause me to take a tangent to something “more productive.”

That said, I acknowledge:

  1. There’s no such thing as multitasking.  Just really fast switching of attention.
  2. Going off on a tangent to fill an idle time slice often gives that tangent more time than it deserves.  Things like scanning the news headlines turns into reading at least 1 long article.
  3. Returning to a task takes a non-zero amount of time to re-acclimate to the details.  The longer you’re away from the task, the longer it takes to re-acclimate.

My “itches” around this issue fall into a few areas

  1. Explicit task focus.  The system should try to keep attention on the current task, and not allow the focus to be lost with a simple alt-tab to another app
  2. Minimize distractions.  When working on a task, keep unrelated things out of sight.  This is related to what I was talking about the other day, about data vs. task.  Most systems try to put as much data on the screen at a time to make it easier to move between items.  But that’s because they don’t know what your current task actually is.
  3. Accommodate interruptions.  When interruptions occur, explicitly acknowledge them, and try to help save the state of the task that is getting interrupted.  

The first thing this system does is exert the task focus.  I requires you to pick a piece of work, and you can get out of that work with either a “done”, “put away,” or an “interruption.”  Every screen reminds you of what you said you’d do.

It’s been a fun week of vacation.  As I told my co-workers, it’s not like I wasn’t going to be in front of a computer on my vacation, it’s just I’d be in front of a different computer.  I’ve also been using this as a chance to explore Grails, and I’m pretty impressed.

Pragmatic Bread

Posted in opinion on January 1st, 2009 by ben – Be the first to comment

According to Larry Wall, the first virtue of a programmer is laziness:

The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about it

I attribute this virtue to Jeff Hertzberg and Zoë François, authors of Artisan Bread and Five Minutes a Day.  They went through all the tradition and legend of artisan bread baking, questioning everything, and reduced it to its essence, and then documented it for the rest of the world.  

Unlike all those Dummy books that promise to let you learn X in 24 hours, this book lives up to its title.  It really is 5 minutes a day, and you’ll always have amazing bread to go with your meals.

Amy and I are mere beginners in this endeavor, but nothing has come out less than excellent in our tries.  The folks we share with are all suitably impressed, too.  If you don’t have the book, we highly recommend it, and giving it a try.  

As disclosure, a co-worker of mine, Graham, is married to Zoë.  Other folks on the team have tried this and give equal reviews.  It’s fun to hear his stories of the runaway success of the book.  She also has a blog, covering more details and other delectable edibles.

Task-focused GTD systems

Posted in opinion on December 30th, 2008 by ben – 3 Comments

Abstract: A primary disconnect of GTD systems is that they are more interested in the data than the actions.  

As an analogy, let’s pretend you are are tasked with starting a new rocking chair manufacturing company. Would you rather have

  1. A pre-designed assembly line that had all the jigs and supplies for the steps involved in building your product, or
  2. Norm Abrams-style workshop (à la New Yankee Workshop) where you have every imaginable high-end tool needed to craft anything out of wood?
I’m hoping you’d choose #1 (since the question wasn’t whether you aspire to be a craftsman).  The key here is that choice #1 is a task-oriented solution, and #2 is focused on the materials and tools.
GTD focuses on the “next action,” driving you toward tasks that you can process through with less mental baggage than abstract project goals.  It is this decomposition of projects into the next actionable tasks that causes so many “ah hah” moments for new GTD disciples.  In hindsight, it’s obvious, but it’s a fundamental shift for most folks.
The trouble is that most GTD systems are based on the data you use to perform your next actions, rather than the actions themselves.  For instance, Microsoft Outlook has email, calendaring, todo items, notes, etc. – all the tools you’d need for a good GTD implementation.  But it doesn’t help you turn that new request from your boss in your inbox into a todo item that’s due by Friday.   There’s no easy way to take a message you just sent and create a tickler for following up 3 days from now.  I could go on…
I want a system that focuses on what to do with the data, rather than giving me arbitrary ways to organize it.  I want an assembly line that I walk up to in the morning and that enables me to crank through whatever work is on my plate and whatever comes at me.  I don’t need lots of customization of views and fields, as long as I can trust that the system isn’t going to let open loops get stale.
In order to make a new system that has a chance of success, it needs to build on a mental model that blends with what new users bring to the app.  What are other analogies for this action vs. data struggle? What other apps are more focused on the action than the data?
Feedback is welcome,
-benJ

Poor economy, even virtually

Posted in humor on December 1st, 2008 by ben – 1 Comment

You know the economy is really in the tank when people start downgrading their virtual properties to save money.  Witness Steve W, who traded in his Lamborghini Gallardo for a Subaru Impreza in Facebook’s Speed Racing

Geek Christmas Tree

Posted in humor on November 30th, 2008 by ben – 1 Comment

In the car this morning, in response to one of Micah’s silly questions: “what will we do with this cell phone car charger now that you have a new phone?” Amy flippantly answered, “we’ll hang it on the Christmas tree.”

“Hey, what if we really did that?” she asked.  We brainstormed for a bit, all about reusing dead or outdated tech as decoration:

  • CDs
  • PS/2 mice
  • Hard drive platters
  • Keyboard keys, strung together like popcorn
Wouldn’t it be a fun office project for the holidays?  Other ideas?

Treating GTD links as first-class

Posted in opinion on November 29th, 2008 by ben – Be the first to comment

I’ve been thinking a lot about a wiki-like system to facilitate the habits of GTD.  It’s a wiki in the sense that everything is an item, and there is no explicit hierarchy.  There are no folders, and no binary parent/child relationships between projects and tasks.

But its not enough to depend on a simple wiki, since wikis don’t treat links as first-class objects.  Wikis automatically link outward from the item to other items referenced in the context, and if they’re good, they can also report which items are linking to items.

If a link were a first-class object, it would have other attributes, such as

 

  • Strength – think of the links that connect you to your friends in Facebook – some friendships are stronger than others, with the strongest being your spouse, weakening down to the point of the folks you added just to play Mob Wars
  • Directionality – if you’re using links to establish task sequencing, obviously one of the items is a prerequisite to the other
  • Why – the “link type”, possibly including
    • blocked by – for “waiting for” items, could be blocked by another person or task
    • revision of – when a newer item overrides the content of a previous item
    • reference – when two things are related just because they are part of the same project
    • source – where did the item come from
    • member of – for mimicking parent/child relationships

 

I have a few questions:

 

  1. What is the smallest set of link types that can suffice to map all the items used for system that captures all your GTD activity?
  2. Do links have “completeness” ? Can a link itself be marked as finished?  Or is it the item that is marked as finished?  (Think about when a task is delegated to someone.)
  3. Do links have age?  Like twine left in the rain, do links fade over time?

 

Starting Grails

Posted in diary on November 27th, 2008 by ben – Be the first to comment

I started my first Grails project today, using the basic project in NetBeans.  I was going to start with vanilla Groovy, but learning thick client Java seemed like more work than going whole hog into Grails.

I’ve said for some time, I’m scared to try Groovy/Grails, since I’ll probably get angry at all the time spent doing plumbing work rather than real code.  I’m on track for that to be true.  Some of the things it does by default are just scary – the scaffold pages for list/view/edit are pretty.  

The prototype I’m working on goes beyond a basic CRUD app, but I could see how this framework closes a RAD gap for the java world.

Google has been my friend – almost any question I come up with has been answered in a blog post or email message.  I haven’t acquired a book yet, although I probably should.  A series of articles at IBM developerWorks has also been a good start

Some vagaries I’m stumbling on

  • When does hot deploy work or not?  Some changes are immediately viewable (and my Bootstrap method has been refreshed), and others require restarting the app.
  • Why doesn’t code completion work in BootStrap.groovy  (Netbeans 6.5)

GTD suffers from the lack of an implementation

Posted in opinion on November 26th, 2008 by ben – Be the first to comment

Given the background about my use of GTD, now I get to into some new opinions.

I’ve been thinking a lot about personal productivity after getting a blast from the past and the emails it spawned about the persistent poor state of high volume email management.

In object oriented programming terms, GTD is an interface, and it doesn’t come with a reference implementation.  It is exactly this lack of an implementation that leaves people struggling with the use of the system and its habits.  

Each person implements GTD according to their primary constraint.  For instance, if you have a high email volume to balance, you tend to look for a system that deals with your inbox and sorting and categorizing the emails into projects and next actions.  If you’re highly nomadic, you might look for a more physical implementation such as as hipster PDA, so that you’re confident your system is always at hand.

Each of these systems needs to apologize for its underpinnings.  The hipster folks have techniques for dealing with email, and the email folks might make tickler emails for the voicemails that they need to return.  Or maybe they try a grander email system that integrates calendaring and todo items.  But every time you integrate with a pre-existing system or concept, you have to compromise to put your round peg into the square hole.

I contend that even GTD suffers from its underpinnings of trying to be all things to all people.  Because it lacks a system, it has introduced more elements than are necessary.  For instance:

  • The weekly review - It’s amazing how good this sounds, but it in practice its job is to patch up all the cracks resulting from a lack of an implementation.  Known as “closing the open loops,” it wouldn’t be necessary if your implementation prevented the loops from getting buried in a folder.  For example, if you have a high volume of next actions, you probably track those items per context.  So each weekly review you have to review the lists to make sure the fact that you haven’t gone to the store this week isn’t blocking the ingredients need for the cake for the party this weekend.
  • The project list - If I have faithfully made a folder for each project, why do I need to keep another piece of paper itemizing the folders in my stack?
  • Actions vs Projects - Allen defines a project as anything that takes more than one task to complete.  But since large projects aren’t a strict sequence of tasks, you end up with sub-projects.  Suddenly, the scope of an item is obscured,  and you lose the big view of your projects.  ”Should I make a folder for this smaller item?”
  • Hard edges –  We’re encouraged to keep hard edges between the categories of things to keep track of.  When the book lists the 7 primary types of things, they’re supposed to stay separate, or you’ll get really confused.  But today’s “waiting for” list is tomorrow’s reference for why the project is late.

I know the book addresses many of these points.  I’m not trying to throw out the whole system, or impugn the value of the habits and flow that GTD promotes.  But I want to build the case for a fresh implementation of something that doesn’t have to apologize for its roots.

Comments are welcome.  I’m actually hoping that this blog can become more of a discussion than just my soap box.