The Week in Links - 11/11/2010

Things You Should Do Immediately After Launching a Website
Some of these are common sense, but there are quite a few non-obvious ones here. A good checklist.

Running Shells in Emacs: An Overview | Mastering Emacs
Working with shells in Emacs is very useful; I almost always have a small one running at the bottom of my window to run commands in. This explains the differences between the different kinds of shells in Emacs, how to use them, and how to change their settings.

Announcing Cloud Load Balancing Private Beta | Rackspace Cloud Computing & Hosting
Rackspace Cloud, where I host a ton of different servers for myself and for clients, has announced a beta of their load balancing service. Good load balancing is a pain to set up, so this is promising.

The 1140px CSS Grid System/Framework · Fluid down to mobile
Nice new CSS grid framework that handles multiple screen sizes with ease. It seems like a fundamental failing of CSS that we need all these frameworks to do really basic stuff like this though.

Dr Nic’s Making CI easier to do than not to with Hudson CI and Vagrant
I need to spend some time with Hudson. It’s an incredibly powerful “Continuous Integration” server, but it does a lot more as well. This article explains how to use it in conjunction with Vagrant to automatically set up your test environment.

How to Use Your Zoom Lens as a Compositional Aid
I’ve been learning photography over the last couple of years. This article did a better job of explaining the effects of using different kinds of zoom lenses. The pictures that accompany the article are worth 1000 words and then some.

Training Your Technical Staff When You Don't Have a Budget

When budgets get tight, it can be difficult to provide adequate training for your staff. Over the last couple of years, I’ve found some ways to provide some training even in the face of a shrinking (or non-existent) budget.

Regional conferences

If you still have some budget, but maybe just not as much as you are accustomed to, look to smaller regional conferences as an alternative to the larger national ones that are in major cities. If you’re fortunate enough to live in a city where a conference is being held, you might get out of having to pay for travel at all. This past year, the excellent No Fluff Just Stuff conference made a stop in our town, and I was able to send two developers plus myself to it for a fraction of what it would have cost to send them away somewhere and pay airfare and hotel on top of the conference cost. I personally attended the Windy City Rails conference this year which was a single day for only $150. While the smaller conferences may not have all the speakers you would get at a larger one, I’ve been really surprised at the quality of the speakers that these conferences draw.


My team has done this for the past year or so. I buy a copy of a book for each person, and we meet once a week to discuss a chapter at a time. Have people take turns leading the discussion. My experience has been that these are most productive if you tackle a topic that your team agrees is currently a pain point, as they can take the information they learn and apply it to their current project. We’ve read through The Pragmatic Programmer, Pragmatic Unit Testingin Java, and are going to move on to Don’t Make Me Think next.

Hashrocket has actually taken this a step further and broadcast these live.


It’s become commonplace for conferences to record their talks and make them available online for free. Additionally, a number of larger user groups do the same. There are a nearly endless number of videos on a wide variety of topics that are available online. Pick a video (maybe two if they’re short), watch it as a group, and then discuss it afterwards.

Here are a few sources I like:

Peer to Peer

We’ve done this even before our training budget shrank. Have people take turns presenting on a relevant topic that they are passionate about. This works well on a few levels: those listening get to expand their knowledge, and those presenting will often develop a deeper understanding of their topic. If a presentation is used, post it somewhere so that people who join the company later can benefit.

So what have I missed? What do you do to keep your skills current when you can’t get money for training?

The Tools I Use

Inspired by Mike Gunderloy’s recent blog post, I decided to put together a list of the tools I use, both hardware and software.

I use a Mac at home and a Windows laptop at work; I plan to cover the Windows tools in a later post.


  • MacBook Pro
    My primary computer is a late-2007 17" Macbook Pro with 2gb of RAM and a 160gb hard drive. I love this laptop, but I made two mistakes when buying it. First, I should have gone with the higher resolution display. If you’re going to have a 17" laptop, you should have as many pixels as you can. Second, I way undersized the hard drive. It was larger than the one in the laptop it replaced, but since I have the three most adorable kids ever, I take a lot more pictures and video than I did previously. This has quickly filled up the hard drive, to the point that I’ll need to replace it with a much larger one next year. To sum up: when buying a laptop, get the largest hard drive and the most pixels you can afford, unless you need ultra-portability.
  • 24-inch Dell Monitor
    Looks nice, and very affordable. Mine was refurbished. The picture quality isn’t bad, but it’s one of their very low-cost displays and is of lower quality than the rest of the line (I didn’t know this at the time). If I was a graphic designer or professional photographer I would probably care more. Since this primarily displays a code editor, a terminal window, and a web browser, I don’t really mind much.
  • Apple Extended Keyboard II
    These are the legendary Apple keyboard you’ve heard about, and the hype about them is true. I bought a couple of them gently used from EBay and then scrubbed them with a brush and some dish soap to clean them up. Paired with a Griffin ADB to USB converter, they work very well. I’m a sucker for the old-style keyboard action.
  • Mighty Mouse (bluetooth)
    A lot of people hate this mouse, but I don’t understand why. It’s solidly built, confortable, and has that cool little ball on top. That said, I’m a keyboard junkie and avoid the mouse when I can.
  • Time Capsule
    This serves as both wireless router for the house as well as the backup system for both laptops. I don’t have an off-site backup at the moment, I need to look into that.
  • Cambridge Soundworks Speakers
    I really wanted the Klipsch computer speakers, but they’re more than I want to spend. These sound good, and cost me only a little over $100 refurbished.


  • Emacs
    I learned programming with an IDE, but I learned to edit text with Emacs. I’ve been using it for 10 years or so now, and it would be difficult to switch. Every few years I have some brief dalliance with another editor (the last one was Textmate, when I bought my first Mac), but I always return to my first love. What emacs lacks in style, it more than makes up for in substance. In one window I can edit code, run shell commands (or a shell, for that matter), edit files on remote servers, and much more. It’s endlessly scriptable and insanely powerful. The fact that it’s cross platform helps as well. My emacs configuration, which works the same (with a couple of minor exceptions) on all the platforms I use it, is located on Github
  • Safari
    I really want to like Firefox, but it’s just too slow. Safari is quick, stable, and includes all the features I want.
  • The Hit List
    Even though it seems to be the popular thing to do these days, I’m not on a continual quest to find The Ultimate Todo List App. I got The Hit List as part of a MacHeist software bundle, and it works well. I mean, seriously, what do you really need in a todo list application? I can make items, I can check them off. The rest is gravy.
  • Adium
    It’s not perfect, but I can talk to people on pretty much any IM network out there.
  • Tweetie
    I used Twitterific for a couple of years, both on the iPod Touch and OS X. Frankly, it was left to rot, with no updates for a very long time. When Tweetie for the iPhone came out, I bought it immediately and after using it for 10 minutes, concluded that I wanted it for the desktop as well. I got my wish, and I’ve been happy ever since.
  • NetNewsWire
    I do not read as many feeds as I used to. I mean, I subscribe to a lot, I just don’t read them that often. My thoughts on why are here. When I do read feeds though, this is the app I do it in. I like that I can navigate everything with the keyboard and send things to Evernote and Instapaper easily.
  • 1Password
    I can’t remember all the passwords I create, or often even the account names (sometimes it’s a username, sometimes it’s an email address…). 1Password remembers them all for me and enters them for me automatically as well.
  • Evernote
    I use Evernote to track all the little bits of data I accumulate: code snippets, blog posts, how tos, meeting notes, PDFs, presentations, etc. I like the fact that it syncs with other computers, and it’s search works very well. I hate the way it captures web pages though, it destroys all the formatting. Yojimbo gets this right. It’s PDF viewing isn’t all that great either
  • Skype
    Skype works great if everyone is on a fast network pipe. It falls down spectacularly if anyone is on a slightly flaky network connection, like say a cell network connection. I use Skype mostly for after hours deployments (group voice call), and video chats with the Grandparents.
  • iWork
    I use Keynote for creating the occasional presentation and Pages for creating things that require more formatting than a text document. Numbers is the coolest application I almost never use.
  • Terminal
    I always have a terminal window open. Always. Usually more than one.
  • Pixelmator
    Photoshop is awesome, but it is both expensive and far more complicated than I want. I am not an image editing guru, I really just need basic capabilities. Pixelmator provides that - it’s Photoshop for mere mortals.


  • Gmail
    It’s got an amazing spam filter and supports IMAP and POP out of the box (Yahoo still charges for this, for reasons I can’t comprehend). I use the online client almost exclusively.
  • Google Docs
    I love being able to create spreadsheets and easily share them with my better half. It does basically everything I need a spreadsheet app to do, and it does it well.
  • Pivotal Tracker
    Oh, how I love Pivotal Tracker. It’s a simple but powerful project management application that lets you keep track of features, bugs, and chores. I keep all my side projects in here, under a seperate account from the one I use at work. Any application I’ve built is in here as a seperate project (this blog, for example). Any time I discover a bug, or think of a feature I want to add, I can throw it in here under the appropriate project and it will be waiting for me when I have time to work on it. It’s nearly perfect.
  • Instapaper
    I read. A lot. Instapaper lets me capture things that I want to read later, and conveniently strips out all of the formatting for me. The iPhone application is great as well, I can carry reading material with me anywhere.


  • VPSLink
    I’ve been hosted with these guys for a couple of years. Fast VPS servers and great uptime.

So that’s what I use to do what I do. If you’ve done a similar list, add a comment below with a link. Or if you have a recommendation for something to replace one of my tools, I’m always looking for cool new tools.

Generating Realistic Test Data With Ruby

Generating semi-realistic test data for an application can be a pain. If the data already exists, as in the case of an upgrade to an existing system, you can generally create data based on the existing database. But what if you need a large sample of data for a brand new system? If you have simple data requirements, there are some Ruby gems that can help you out. Faker is one such gem, which lets you generate realistic names, addresses and phone numbers. But what do you do for things that are a little less typical? Things like scores, ratings, ages, dates, etc. I needed to do this recently for a prototype I built of a system to generate letters. Here’s the Rake task I ended up with:

This script adds 1000 records to my database that are representative of what real production data would look like. The quantity of data is obviously easily adjusted up or down as needed.

This is just a standard rake task that you can drop inside lib/tasks. Most of this is fairly standard ruby code and not very interesting, but lets look closer at what makes this work.

The first portion of the script does some setup work, deleting existing data. Then it sets up a series of arrays for the values that will be used for individual fields. For example the volumes variable:

volumes = (8000..100000).to_a

This creates an array of integers containing every number between 8000 and 100000. Response rates and variances are set up similarly, as are the client names.

In the loop that generates the actual data, we then call the rand() function on these arrays to select a value from our range. This function isn’t a standard part of the Ruby Array class, it’s actually added to the class by ActiveSupport.

Using this method makes it very easy to generate test data within predefined acceptable ranges.

For another take on this topic, see the EdgeCase blog

A Collection of Great Tools for the Ruby Developer

I’ve been a bit heads-down lately, working on a super-secret project in Ruby. More on that in the near future, but in the meantime I wanted to share about a few things that I’ve started using.


When I started my new project, I wanted to try one of the new testing frameworks for Ruby. The problem is there are a number to choose from. What to do…

I settled on Shoulda. I wish I could tell you that this was a rigorous process, that I evaluated each framework carefully, learning about each one’s strengths and weaknesses. I did not, I cheated. You see, a while back, Josh Susser did just that thing. He called it the The Great Test Framework Dance-off. He settled on Shoulda, so that’s what I went with.

Shoulda is developed by Tammer Saleh of ThoughtBot, who have a number of other really nice projects. Shoulda’s tagline is “Making Tests Easy on the Fingers and Eyes”, and it lives up to that goal. It has a very nice syntax for developing tests, including a complete set of macros for testing controllers and models. It’s a joy to use. Here’s what it looks like (both samples taken from the Shoulda README :

Nice, right?

Here’s a sample of the ActiveRecord macros in action:


So what’s the big deal? Well, it’s easier to read for one. Instead of horrendous method names like test_should_do_this_but_not_that, you get to write English: should “do this but not that”. The macros in Shoulda also let you test your models and controllers easily.

Pivotal Tracker

Pivotal Tracker is an Agile project management tool, developed by the folks at Pivotal Labs. It lets you create projects, track release, stories, and defects. The beauty of Tracker is it’s all-on-one-screen user interface. It lets you see everything at a glance, and even provides keyboard shortcuts for common tasks. I’m not alone in my admiration of Tracker, it seems to be extremely popular among the Rails consulting shops (Hashrocket, for one).

While Tracker is powerful enough to be used for large multi-developer projects, it also happens to be perfect for managing your side projects. Enter the features you want, organize them into releases, and just click start to begin the first one. Click finish when you’re done, and move on to the next one. Easy peasy. Did I mention it’s free?

Be sure to check out the screencast, which gives a nice overview of the application.


John Nunemaker is a prolific Ruby and Rails developer, as witnessed by a quick glance at his Github page. One of his most recent projects is HTTParty, which makes it dead-simple to consume REST apis using Ruby. Here’s what it looks like:

HTTParty automatically detects whether the response is JSON or XML and parses it appropriately. It really doesn’t get much easier than that. There’s also a nice command-line app bundled with the gem that lets you call RESTful web services easily from the command-line, with a few more bells and whistles than curl.


Sinatra is a great, compact web framework similar in concept to Why the Lucky Stiff’s Camping framework. It makes it trivial to create a web application in just a few lines of code. It was originally written by XXX to allow for creating lightweight web services, but has since become quite popular as a web framework to use when Rails might be overkill.

It’s easy to create simple test applications for libraries, but also robust enough to create full-blown websites with. Check out the Sinatra website and the Sinatra book for more details.

What tools have you discovered lately?

The Programmable Government

We are headed toward a time where the workings of government are much more visible to the American public.

Through things like the Freedom of Information Act, this information has technically been available for some time - but not in a form that is easily consumed. This is starting to change.

The emergence of open APIs that provide access to information about how the government is operating is a massive step in the right direction. It will, I hope, bring forth a new wave of websites that mine the data that these web services provide, and expose it to the world. Voting records, government expenditures, bids, and bill details all need to be made available for anyone to consume.

Here are a few of the APIs that I have come across. Some are available from the government themselves, others are from third parties.

The New York Times Congress API

This API, part of a growing set of APIs from the Times, let’s you program Congress. Well, not exactly:

The initial release exposes four types of data: a list of members for a given Congress and chamber, details of a specific roll-call vote, biographical and role information about a specific member of Congress, and a member’s most recent positions on roll-call votes.

Our database contains House votes since 1991 and Senate votes since 1989. House members are from 1983 and Senate members date back to 1947

Follow the Money

This API provides information about campaign contributions for state-level campaigns.

Sunlight Labs

The Sunlight Labs API provides methods for obtaining basic information on Members of Congress, legislator IDs used by various websites, and lookups between places and the politicians that represent them. The primary purpose of the API is to facilitate mashups involving politicians and the various other APIs that are out there.

Capital Words

This site, another project of the Sunlight Foundation tracks word frequency from the congressional record. Most frequently used word: Proposed.

One of the few official government APIs, this allows you to find out where your money goes:

Have you ever wanted to find more information on government spending? Have you ever wondered where federal contracting dollars and grant awards go? Or perhaps you would just like to know, as a citizen, what the government is really doing with your money. The Federal Funding Accountability and Transparency Act of 2006 (Transparency Act) requires a single searchable website, accessible by the public for free that includes for each Federal award:\

  1. The name of the entity receiving the award;\
  2. The amount of the award;\
  3. Information on the award including transaction type, funding agency, etc;\
  4. The location of the entity receiving the award;\
  5. A unique identifier of the entity receiving the award.


The Republicans are ahead of the Democrats on this one, but I would doubt we’ll have to wait to long to see them follow suit. This site is similar in concept to the Times’ Congress API mentioned above (though obviously only for the Republican members), but provides some additional information that the Times does not.


This is only a sampling of the APIs that are available, and hopefully this is only the beginning. I’m optimistic that both the government and third parties will provide more of these, and that groups will make use of this information to expose the inner workings of the government to the people who elect them.

Are their any APIs that I missed? Are there any sites that are using this information in interesting ways? What do you want the government to make easily consumable that it isn’t today?

A Brief Introduction to the Arduino


For Christmas, I got an Arduino. Well, really I got two coffee pots. Identical ones. So I returned one of them to Amazon, and used the refund to buy an Arduino starter kit. It’s a neat device, with a ton of potential. Here’s why.

Ok, so what is it?

The Arduino is an open, hackable microcontroller, designed to be easy to program and easy to build things with. Simply put: the ultimate hacker toy.

For about $40 (or less, if you want to buy all the parts and build it yourself), you can have a device that you can program from any computer with a USB port, and that is capable of interfacing with the outside world. It doesn’t require any special training in electronics, and is ideal for experimentation. You can add an amazing array of sensors and add-on boards to allow you to do just about anything you can imagine, from reading the temperature to getting GPS coordinates.

Did I mention you can program it in Ruby?

What can you do with it?

Pretty much anything you want. You can start by making an LED blink - this is the hardware equivalent to “Hello, world”. Beyond that, the basic board comes with an array of inputs and outputs that you can connect up to all sorts of things: temperature and light sensors, motors, GPS modules. You name it, you can build it.

Here’s a quick rundown of a few things people have used these for.

This is only a fraction of what’s out there. An impressive community has sprung up around these little guys, and there is no shortage of cool projects documented on the web.

If you want to see the Arduino in action, check out Greg Borenstein’s presentation from RubyConf on programming the Arduino with Ruby, in which he demos an Arduino-based drum machine (literally, a machine that plays a drum with chopstics) as well as a board that uses windshield washer fluid pumps to mix screwdrivers. It’s one of the most entertaining talks I’ve seen.


In summary, if you’ve ever wanted to play with hardware, the Arduino is the place to start. It’s inexpensive, easy to use, and endlessly customizable. I’ve had mine a week and it’s been great fun so far.

  • liquidware open source electronics A provider of Arduino boards and addon boards
  • Tutorials A collection of tutorials from the official Arduino site
  • RAD - Ruby Arduino Development A tool to let you build Arduino apps uusing Ruby
  • Adafruit Industries Another provider of Arduino boards as well as other electronic paraphernalia.
  • LadyAda This site is run by Limor, proprieter of Adafruit Industries and contains a lot of tutorials on the Arduino and electronics in general.
  • SparkFun Provider of Arduino boards plus an array of other kits and projects.
  • Arduino Starter Kit This is the kit I bought. It includes everything you need to get started - even a USB cable.

Do you have an Arduino? Built anything cool with it? If so, share in the comments.

Photo by Remko Van Dokkum - Some Rights Reserved

Interview: Mike Rohde - Designer, Blogger, Sketchnote Artist


Today’s interview victim is Mike Rohde. I’ve followed Mike’s blog for a number of years, and I had the good fortune to meet him at the inaugural SEED conference (see his coverage here and mine here). Mike has gained fame recently for his Sketchnotes - notes and hand-drawn pictures from events such as An Event Apart, SEED, and the upcoming SXSW 2009, but apart from that he is a talented writer and designer with a large portfolio of websites, logos, and other impressive work.


Thanks for agreeing to do this interview Mike. Can you tell us a little bit about yourself?

Thanks for the invitation Larry!

About me? I’m a kid from Chicago who loves to draw. I’ve managed to find a profession that allows for and encourages drawing and sketching skills.

I’m a designer and art director, with experience in print and the web, with a passion for usable, practical and good-looking design solutions. I’ve always had a technical side, being fascinated with computers and technology since I was a young kid.

Fortunately for me, web design and working with technical people in my work is a great fit, because I can share my design skills but also relate well to the technical nature of projects and technical people.

I’m also a blogger since 2003 at where I share my thoughts on life, design, technology, visual thinking, music, cycling and whatever else I feel is worth of sharing with the world.

I’m a husband and father, follower of Jesus and a coffee fan.


Until recently you worked as Art Director for MakaluMedia. For those of us not in that field, can you describe what an Art Director does?

Funny you should ask because your question reminded me of a A List Apart article on this very subject by Stephen Hay:

I liked this quote from the article, showing how subjective the role of an art director can be, based on the discipline they’re in:

“In the movies, art directors are usually responsible for creating the “look and feel” of the film. In advertising and print work, art directors (often teamed up with a copywriter) come up with “concepts,” the creative ideas which communicate with us on a gut level through such devices as theme, metaphor, and symbolism. Some art directors do little more than dream up these ideas and present them to clients, while some oversee almost all aspects of the design and production process. Surprisingly, art direction is seldom taught in schools and there is very little formal information on the subject; it is often learned in practice.”

In my view, an “Art Director” is a designer with a 50,000 foot meta view of design projects they work on. They are involved all the way from listening to the client and stakeholders on a project, through the conception of an idea to the design, development and production the idea.

The art director is responsible for maintaining the vision of a design idea, as much as is possible (or reasonable), to achieve the final result. This means maintaining consistency in the project design, structure, usability, colors, brand or identity and anything else related to the design.

It also means working with the client to maintain these goals as well as any team members producing the work, in my case developers who would code the sites and back-ends for web applications. As an art director, I feel I represent the user. I’m responsible for making sure whatever I’m directing — a logo, an icon, a website or printed item — is communicating the message my client wishes to send, effectively and simply.

After many years as a senior designer I began to realize that while I enjoyed the design aspect (and still do), I especially enjoy guiding a project’s consistency between concept and completion, and continuity between multiple items a company produces (website, business cards, brochures, etc.). That’s when I felt comfortable calling myself an art director.

You have blogged about the process you follow to develop. Can you summarize what you do to get from a concept to a finished product?

First, I ask lots of questions, like “What are my client’s goals? What is my client trying to achieve with this project?” and so on. I want to know the ultimate reasons for what we’re about to do, because sometimes what a client proposes may not be the right solution for the underlying challenge.

Once I understand the challenge, I read my notes, and synthesize the goals for sketching. I use pencil sketches to help work out ideas that can solve the challenges I’m facing. These sketches are presented to clients with what I call “rationale notes” explaining the whys of my design concepts.

I’ve found sketches invaluable to solving problems before I ever get to the computer to produce my designs. Some designers may be afraid to show clients their conceptual sketches. I’ve found that showing my sketches to clients is an effective way to share my process, while leveraging my client’s knowledge in solving the problem. Showing sketches draws the client in, making them a part of the solution

What are the tools of the trade for you as a designer?

While computer tools like Adobe Illustrator, Fireworks and Photoshop are important, I feel my most important tools are my pens, pencils and sketchbooks. I have several sketchbooks I use to solve design challenges with pencil or pen, before I even get to the Mac.

On the Mac, I’m a big fan of Adobe Fireworks for web design and icon design, since it offers very useful vector tools. I’ve been an Adobe Illustrator user for many years as well, which I think makes Fireworks a natural choice.


Where do you look for inspiration? Do you have favorite sites or books, or do you just observe things around you?

I have lately been looking in a variety of places for inspiration. As a web and UI designer and art director by day, the applications and sites I use daily provide inspiration to me.

I’ve found friends on Twitter suggesting great articles and design inspiration, which is one of the reasons I find Twitter so valuable as a designer. I’m happy to see so many design professionals tweeting.

Even everyday items and design solutions provide insight and inspiration for me. I love hand-painted signs and am always aware of packaging in stores, and other design elements I encounter in my everyday life.

Some sites I enjoy checking out for inspiration include:

I find inspiration to be best when it’s random and not too planned. :-)


You’ve gained some fame lately for your Sketchnotes. 37Signals linked to your sketches of the Seed conference (which I covered as well, though not nearly as graphically), and your notes from SXSW have been ever more widely covered – including Boing Boing). Where did the idea for Sketchnotes originate?

They’ve been brewing for some years now. I’ve always been one who sketches and doodles, as well as being a long-time note taker, but back in 2007, I made a decision to intentionally combine the two at the Adaptive Path’s UX Intensive workshop in Chicago:


It was well received and I enjoyed the process — so I kept doing “sketchnotes” at other events like SEED 1 and 3, SXSW Interactive and An Event Apart just this past October. Sketchnotes seem to be very well received by attendees and non-attendees alike.

Now I’m being brought on at events as an official “sketchnoter” to capture the event from a different perspective. I’m very excited about this opportunity to become a resource. In fact I’ll be at SXSW Interactive 2009 as an official sketchnoter this March.

I’ve found that taking copious amounts of notes helps me stay engaged in whatever I’m listening to or else my mind tends to wander. Do the Sketchnotes serve a similar purpose for you?

Yes. I find taking notes and sketching really reinforce what I’m capturing in my head as a speaker talks. Sketchnotes are not meant to be word-for-word stenographer notes, but interpretive. I capture what I feel is important, which makes sketchnotes personal.

However, because someone is actively listening, processing and selecting important ideas, sketchnotes have personality. What they maye lose in fine detail is replaced with a concise, personal way of capturing the moment.

Sketchnotes were intended for myself, but as I began posting them on Flickr, I found others who had attended the same event connecting with them. Even more surprising for me were those who hadn’t attended the events seemed to enjoy reading my sketchnotes. Very cool stuff.

You developed and sold a calendar of coffee-themed sketches this year (which I received as a Christmas gift from my wife, who apparently knows me too well). Will there be more products coming (ala Hugh McLeod’s prints and business cards) or was that a one time experiment?

Right now I’ve focused on the Sketchtoon Coffee Calendar, producing another edition of the same calendar for 2009:


I’m contemplating several different ideas that would create other products for my and sketchtoons, but I’ve been so busy with work and otheractivities, new product development has been on the backburner.

Thanks again for the opportunity to share about my work and thoughts Larry - I especially appreciate your interest in my sketchnotes and sketchtoons!

The Coming Decline of Rss and Atom

Ever since I discovered Bloglines some years ago, I’ve been hooked on RSS. I subscribed to a slew of feeds and treated it like a to do list, always trying to get it to zero. Subscribing to those feeds enabled me to see and learn about a lot of things I wouldn’t have seen otherwise.

Since that time, RSS feeds have been my primary source of what’s new and interesting in the world of technology. Along the way, the feeds I was subscribed to changed, as my interests changed, and I gave up Bloglines for Google Reader. But my appetite for feeds has only grown.

Lately, though, I’ve seen a shift. Most days, I skim the headlines in Google Reader, looking for specific sites, without ever getting the unread count down to zero. What I’ve started noticing is that even when I was keeping up on RSS feeds, I had already seen all of the interesting stuff. The primary reason for this is Twitter.

Twitter is my social network of choice. Yes, I’m on Facebook (though I succesfully avoided it for a long time), and I’m also on LinkedIn, but the place I spend most of my social networking time is Twitter. Most of the people whose blogs I’ve come to rely on for news and insight are people I follow now on Twitter. I get more frequent links and thoughts through that site than I ever would through a blog, and it’s much more real-time than RSS. There are a number of sites which even offer to send you notifications of new content through Twitter in addition to RSS, like RubyFlow.

Additionally, I think sites like Reddit and Hacker News are having a similar impact. Their voting functions help to filter through the haystack to find the best stuff and ensure that it rises to the top - at least in theory, I’m not convinced that it always works in practice.

Perhaps the future of RSS and Atom lie as protocols that enable applications to share information rather than as a consumer-facing application of it’s own. They’re the plumbing, not the faucet.

While I still use RSS, and won’t likely be shutting down Google Reader any time soon, I find that the interesting things seem to find me, rather than me having to wade through feed after feed to find them. This is a byproduct of me being connected to a group of people on Twitter with similar interests, who share things as they come across them. I’m questioning whether my use of RSS will decline as I consume more information this way.

I’m curious if anyone else is experiencing the same thing.

Some Software Was Harmed in the Making of This Site

As noted on the about page, I decided to write my own software to run this site.

The following technologies were harmed in the making of this site:

Ubuntu Linux on VPSLink

VPSLink has good deals on VPS hosting. I pay $24 per month for a 256mb VPS, with impressive uptime. I originally intended to go with Slicehost, but they had no slices available at the time (and didn’t for several months as I recall), but I have not been dissapointed with VPSLink.

Ruby on Rails

I haven’t found a better platform for developing web applications yet, although I’m keeping my eye on the up-and-coming web frameworks in Ruby, Clojure, and Scala. With the merging of Merb into Rails 3, Ruby on Rails looks to get even better.


Actually, I like PostgreSQL better, but I run a Wordpress site on my server that needs MySQL so I’m using it for this site instead of running two database servers. I actually tried deploying with SQLite originally, but I ran into issues with it. It takes some doing to make MySQL run well on a memory-constrained VPS, but it’s possible (tip: don’t use InnoDB).

Blueprint CSS

Developing complex layouts that work cross-browser is painful. Blueprint is a CSS framework that makes it less so. It’s currently only used on the administrative portion of the site, but I plan on reworking the main layout with it as well. I’m also planning on playing with 960gs, which is similar (better, in the opinion of some).


JQuery is really, really good. I could go into all the reasons why, but Chris Wanstrath and PJ Hyatt already did. I’ve used Prototype for a number of years, and JQuery just seems to fit better. There’s a huge library of plugins available as well. The only downside is the somewhat light documentation available for it, although that seems to be changing.


Here’s my rule for web application deployment: Automate the Very First One. This really makes all the difference in the world, especially for side projects like this. When deploying is trivial you will do it all the time. As I was working to get this new site out the door, I spent part of an afternoon at the local coffee shop to fix the few remaining issues with the code and get the server configured. In that time, I deployed the site 6 times. My point: deployment has to be easy or you won’t do it. Capistrano makes it easy.

Phusion Passenger

I’ve always used Mongrel for hosting Rails apps but Passenger (aka mod_rails) is the new hotness in Rails hosting, and with good reason. Once it is configured on your system, web deployments become very easy. There’s almost no setup, and you don’t need all of the monitoring infrastructure that mongrel requires. It runs under Apache, and as a result uses somewhat more memory. This is certainly offset by the ease of use and administration.

Ruby Enterprise Edition

Provided by the same folks who brought you Passenger, REE reduces the memory usage of your Rails application by roughly 30%. On a memory constrained VPS such as mine, this is a huge deal. I was a little concerned about running a different version of Ruby than the one I was accustomed to, but lots of people are running REE these days, and to date I have had no issues.

So that’s the tech behind this site. As I add some additional functionality here, I will be bringing in a few other things, and I will write about it as I go.


Git has a steeper learning curve than Subversion, but it’s definitely worth learning it. It’s blazing fast, clean, and has some impressive features, particularly around merging. For this project, I just used it locally, without ever pushing to a server. I’d recommend using it even when you’re not collaborating with other developers.

So, what did you use to build your latest project?