Service Oriented Design (also known as Service Oriented Architecture) is a design technique used in software projects, both large and small. It follows the idea that you divide up a program into separate isolated pieces, or services. This sort of separation has a number of advantages.
- You can test and debug the pieces individually.
- You can change out pieces for new designs without affecting the rest of the system (provided the new systems use the same API).
- You can scale the pieces individually (you can spark up more job runners, for example).
You can apply this sort of design to your own life and processes. Recently, I’ve become more aware of how this applies to my own “reading algorithm” , and with this realization have taken it even further. I feel I’ve improved the efficiency of my system, leaving me with more time to do other things.
Like write on this damn blog.
So what the hell?
So what’s this all about anyway? You read Twitter and people post links. You follow RSS feeds that have interesting articles. You see interesting things on the web in your random browsing. This is about what the hell do I do with all this information?
Input stream sources
The first points of contact to all of this information are the various information input streams. This could be Twitter, RSS aggregation services like Postrank and coder.io, your RSS reader itself (fed by the aforementioned services and other feeds), and random browsing.
Don’t Cross Managing the streams
There are a few initial ways to manage the flow of information. Google Reader has a nice little Trends feature. It keeps track of things you read (by marking as such) and don’t read. If you Mark All as Read, those items don’t count towards the total read count. You can then see what feeds you don’t actually read and unsubscribe from them. Google Reader Trends is a great resource for managing feeds, culling those that are of no value to you.
coder.io is another great resource for programmers to find interesting things to read. You subscribe to various topics and get one big feed made up of articles from other feeds which are retrieved and tagged automatically. You can probably clean out any feeds from your reader relating to programming, and just subscribe to coder.io to get your daily does of programming news.
coder.io isn’t perfect, so I pair it with Yahoo Pipes. It lets me filter out bogus things, like stuff from Reddit and Sourceforge, stupid titles (Follow Me on Buzz), and other things I pay attention to in other ways. For example, I subscribe to The Changelog with iTunes, so I don’t need to hear about it from coder.io, even if it does talk about something I care about.
Round 1: Dumping ground
In the first round of filtering, you throw things in the dumping ground. If it sounds cool and interesting, you throw it there. Don’t spend more than 5 seconds analyzing an article title, tweet, or intro paragraph to decide if this link should be reviewed further at a later time.
Just dump it.
There are three main services that can handle this job: Instapaper, Read it later, and the newcomer Readability. I’ve used all of them, though it doesn’t really matter which one you use. I like Instapaper for the ability to have folders, though the folder editing system needs some work. Readability is super slick, though costs money (as little as $5/month), but that money goes back to the publishers you read.1
They all have 1-click methods (typically a bookmark) to save a page for later, so it’s trivial so add things to the dumping ground. The first two also integrate with most Twitter applications, and Readability is on the way for a more complete integration.
Round 2: Filtering
The filtering stage is separate from the dumping ground stage. When you’re at home, digesting dinner with a nice glass of wine, you can pull out your iPad or laptop, and start filtering your dumping ground. There are typically 3 different things you can do with an article, and a fourth if you have a Kindle.
If the article is interesting, relevant and short, you can probably read it right there and get the information into your brain. When I say relevant, I mean relevant to whatever you’re working on at work or at home. If you are working on a ruby on rails project using mongodb at work, and learning clojure at home, an article about erlang isn’t entirely relevant. If it’s at this point in the chain, it should be still be interesting to you.
If the article will take more than about 5 minutes to read, you can move on and shelve it.
You can shelve articles that are bigger (maybe an academic paper), but you still want to actually read in the near future. This does require some discipline, in that you have to schedule time to go through your shelf and actually read things. If your dumping ground supports this (maybe you use starring for this, or a folder in the case of Instapaper) you can use it, or just use a bookmark or bookmarking service.
Bookmark and archive
With most of the things that go into the dumping ground, you can probably bookmark them. If you read or shelved it, you probably want to keep it for reference. If you didn’t read or shelve it (interesting, but not relevant), you probably want to have it for when you do start to deal with the technology or topic of discussion.
I find clojure and erlang interesting, so they are in my feeds. I’m not doing anything right now with the languages, so articles get quickly scanned to see if they might be useful, and then I use Google Bookmarks to save and tag them for later.
I’m a big fan of Google Bookmarks since saved (starred) items show up in my searches. Say what you want about Google knowing everything about you, but this kind of thing I love. Bookmarks in my browser don’t do anything for me, since I have to make an effort to use them. Google Bookmarks integrates naturally into my everyday usage of the web. Delicious was a popular alternative, but ever since the shenanigans with Yahoo! everybody has been running away from them. I even wrote a migration tool. Pinboard.in is also quite popular and took off quite a bit when Delicious “died”, since they have a pretty solid Delicious importer.
If you find you end up with lots of links to PDFs, I’m a fan of Google Docs. You can upload PDFs which can be converted into a Google Docs format if you choose, but more importantly, they can be searched (even if they are still in PDF). If you’re a Chrome user, you can also grab the Docs PDF/PowerPoint Viewer extension which will make PDFs and other file formats open in Google Docs, allowing you to save them with 1 click.
If you own a Kindle, you can sign up for my service kindlebility to send articles to your Kindle, instantly. I use this for longer articles that I do want to read and are appropriate for Kindle viewing, and then I just carry my Kindle around and read at my leisure.
Some articles with lots of source code or important color images don’t work very well on the Kindle, and get shelved.
Wrapping it up
Now you have separate processes to handle all the information you want to take in. There are tools to help figure out what you’re not getting value from, and places to easily stash things you find for later evaluation.
You have a straightforward method of deciding what to do with articles, whether they get read, shelved, bookmarked, or sent to your Kindle.
Now all you have to do is be disciplined and schedule the time to process your dumping ground, and read shelved items.
Pretty soon you’ll be talking about “Reading List Zero” like “Inbox Zero”.
Appendix A: Books
Books are another subject entirely. You can’t just read every article you find on the web and call it a day. Expand your horizons into actual books if you don’t already. The Kindle makes reading books easier than ever with instant delivery and its small form factor. We don’t even need to kill any trees!
I used to read a lot more actual books than I do now,2 but I’m trying to remedy that by simply scheduling the time. Every night, every morning, at lunch, whenever! Just pick a time, set aside an 30 minutes to an hour, and pick up a book.
1 At least that’s the plan!
2 Maybe I got sick of books from university…