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.

USASpending.gov

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 GOP API

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.

Conclusion

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

Arduino:http://www.flickr.com/photos/remkovandokkum/2667608562/in/set-72157606159601535/

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.

Summary

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

Introduction

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.

:http://www.flickr.com/photos/rohdesign/2152486744/in/set-72157603590093912/

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 Rohdesign.com 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.

Design

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:

http://www.alistapart.com/articles/artdirweb

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.

:http://www.flickr.com/photos/rohdesign/247103592/in/set-72157594290438895/

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.

http://twitter.com/rohdesign

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:

http://ffffound.com/
http://www.alistapart.com/
http://www.designobserver.com/
http://design.alltop.com/
http://logopond.com/
http://delicious.com/tag/design
http://www.underconsideration.com/speakup/

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

Sketchnotes

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:

:http://www.flickr.com/photos/rohdesign/sets/72157604109069527/

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:

:http://www.cafepress.com/rohde.40227192

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.

MySQL

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

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.

Capistrano

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

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?


Welcome to the New Site

I’ve maintained a blog since sometime in May of 2005. As with many blogs, posting regularity varied. Sometimes it was daily, sometimes a month or two would go by with nothing new at all.

This is something different.

The content on the old site changed over time, just like it’s author. Interests come and go, technologies that were once shiny and new have lost some of their shine. I stopped writing short posts that were mostly links to other people’s content, and starting writing longer articles. I did some interviews, and a bunch of book reviews.

Then, as is prone to happen, I got busy. In the time I’ve been writing this I’ve gone from having one child to having three. My job responsibilities have changed. This site got a bit neglected as a result.

So a while back I started thinking about the site, and what I wanted it to really become. And I thought. And then I thought some more. My thoughts evolved over time, and I’ve settled on what I’m launching here today.

I’m a curious person, and always have been. My interests are varied, and change often.This site is a reflection of those facts. Some of the content from the old site has been migrated to here, much of it was not as it was either not relevant or didn’t fit well with the new site. The focus of this new site will be whatever happens to have my interest at the time: mostly technology, software development, and entrepreneurship, but extending into other areas as well. I will continue to do interviews and book reviews, and have several of both to publish in the very near future.

I hope to write here on a more consistent basis, but they will be longer articles and as such it’s not likely to exceed more than once or twice per week. I’ve created a new section just for links to interesting things, called Curiousities, and there will be content there daily.


In Defense of Twitter

Twitter bashing has become a bit of a past-time for some people. I don’t think that the criticism leveled at Twitter is fair or accurate. It is generally based on a misunderstanding of the technical problems they are facing. In the case of TechCrunch, it’s a desire to drive traffic to the TechCrunch website by fabricating conflict and making personal attacks.

Twitter has had a hard time scaling. This is obvious to anyone that uses the service, and is readily admitted by the people behind Twitter. The present problems have brought out all of the Armchair Architects, and I’ve seen a lot of commentary stating “I don’t understand why this is so hard, all you need to do is [insert gross over-simplification of the problem here]”. It’s very easy to apply some 20/20 hindsight to this problem, but another thing entirely to be in the trenches day after day working to keep Twitter up and running while trying to make large-scale changes to fix the underlying problems.

Here’s the thing. Twitter was started as a side-project inside Odeo. It was developed in Ruby on Rails, the same tool that they had used successfully to build Odeo. While this choice is a major discussion point for their critics, it seems to me to have been a very reasonable decision. Ruby on Rails was what they were familiar with, and at first glance seems to be a good fit. I suspect most people would have made the same decision, given the same situation. The bottom line: They made the best decision they could, based on what they knew at the time. Keep in mind that nobody even knew whether Twitter would gain any traction - certainly none of them could have anticipated the warm reception it has been given.

Obviously their existing architecture isn’t working. The fine folks at Twitter have figured this out, and they are busy rebuilding the system to handle the current load and scale accordingly. This isn’t an overnight fix - it will take time to rebuild Twitter with all-new innards. Let’s be patient. Frankly, the internet needs to take a collective chill pill on this topic.

If you’re not following me on Twitter, you can remedy that here.


Cool OS X Application: Shelf


One of the most useful ideas I’ve seen in the past few years was Dashboard. Dashboard was an open source project launched by Nat Friedman of Ximian (since acquired by Novell). It’s aim was to provide a “dashboard” of information relevant to you while you were doing work. If you were having an IM conversation with your friend Bob, it would show you the last few emails Bob had sent you, previous IM conversations with Bob, Bob’s contact information from your address book, etc.

I had always thought that Dashboard was an intriguing concept, and one of the few examples of real innovation on the desktop that I have seen in a while. It was a bit dissapointing to see the project get sidelined, but these things happen.

A project emerged recently for OS X that is based on the same concepts, although implemented differently. It’s called Shelf and is written by Tom Insam who is a developer at Dopplr (though all indications are that this is an independent project and not supported or endorsed by Dopplr).

Shelf watches the applications you are using in OS X, and displays relevent information from applications local to your computer as well as web sites (like Dopplr, naturally). Here is Tom’s own description from the Shelf website:

Shelf is an app for MacOS that looks at the current foreground application, and tries to figure out if what you’re looking at corresponds to a person in your Address Book. Then it’ll tell you things about them. … Just run it. It’ll sit in the background, and watch the foreground application. If it can tie something you’re looking at (the current url in your web browser, for instance, or the target of an open chat) to a person in your Address Book, it’ll open a window and show you their name and picture, and it’ll try to fetch RSS feeds for any URLs in their address card.

Although it’s a newer project (only at version .13), Shelf seems to be off to a promising start. It provides hooks into a number of different applications on OS X already (according to the Shelf site):

  • Safari - looking at the foreground url, and for microformats in the source of the current page.
  • Firefox - looking at the foreground url.
  • Mail.app - From the email address of the sender of the currently selected email.
  • NetNewsWire - From the homepage url of the currently selected feed item.
  • Twitterrific - From the homepage or twitter page urls of the currently selected tweet.
  • Adium - From the IM username of the current conversation.
  • iChat - From the IM username of the current conversation.
  • Address Book - The currently selected person.

This is an idea whose time has come, I think. There are obviously some gaps here, for example if you use GMail as your email application (as I do), or Google Reader for RSS feeds. Integrating with all of these applications is a tricky problem, but it’s not insurmountable. I think it’s certainly worth solving though, as the benefits could be huge.

I hope this project doesn’t fall by the wayside, as it has too much of a potential impact on the way we work. It’s possible that Apple will implement something similar, it seems like the next logical progression of Spotlight.

Are there any other tools like this out there?


Links for 5/27/2008

I’ve built up a big backlog of links. Here’s the first batch.

Unix Command Line Kung-Fu

33 Pages of command line goodness. I’ve been rocking the command line for almost a decade, but there’s a ton of stuff here I didn’t know.

Update : Hal Pomeranz, who created this document, sent me an email with a link to the PDF version of the document. You can find it here. Thanks Hal!

Erlang vs. Scala

I want to experiment with both of these languages.

21 Ruby Tips You Should Be Using In Your Own Code

The title is self-descriptive, and as you would expect from Ruby Inside there are a lot of nice shortcuts here.

Community Engine: A Social Networking Plugin for Ruby on Rails

This has been pretty well publicized, but here it is in case you missed it. Community Engine allows you to add social networking capabilities (profiles, photos, blogs, forums, and more) to any application simply by adding this plugin. Extracted from live websites, so it is real-world tested.

Awaken

Awaken is a slick little app for OS X that I picked up as part of the MacHeist bundle. I’ve used it as a timer for those occassions when I need to force myself to work on something for “Just 10 minutes”, but here are some other uses.


Video Lectures

I stumbled across a great site tonight, chock full of the geekiest videos I’ve seen. The main sources seem to be university lectures. Very good stuff, and in a variety of disciplines such as Computer Science, Business, Chemistry, and Mathematics.

Check it out: Video Lectures.