The Reading Revolution

The Web is in the middle of a reading and design revolution. And I’m not talking about the demise of the erstwhile <blink> tag. We’re seeing the rediscovery of the web as powerful document and knowledge transfer platform just as the Renaissance saw the rediscovery of Classical knowledge and wisdom. Independent of the rise of the online video and music people are also reading on the web, now more than ever. And there is no shortage of words, paragraphs, ideas and stories to read. Flexible web typography, the popularity of clean, elegant designs and the increasingly sophisticated rendering engines in modern browsers are helping to sustain and fuel our reading needs.

At the heart of this resurgence of reading are technologies that fundamentally change the experience of reading on the web. First on the list is Instapaper. The brainchild of Marco Arment (formerly of Tumblr) Instapaper is a web service and iOS application that is designed to one thing: make it possible and easy to save text content from the web and then present that text in a beautifully designed package. Instapaper strips out all forms of advertisement, images and anything else that distracts from the experience of just reading. To use Instapaper you sign up for an account and install the “Read Later” bookmarklet. When you find an article you want to save you just click on the “Read Later” button in your bookmarks bar and the entire text gets parsed and saved for later. There is no form to fill out and no need to set any options. You can get along really well with just the defaults.


Instapaper on the iPad

Instapaper on the iPad


Where Instapaper really shines is if you pair it with the iPhone or iPad app. These apps sync automatically to your account and download the full text of your saved articles. The articles are then presented in a no-distractions format on a clean background with beautiful fonts. Reading Instapaper articles on an iPad is one of the best reading experiences I’ve ever had, second only to the Kindle. Words and screenshots do not do the experience justice, you have to see it for yourself. If you read a lot of long-form web content it might be worth getting an iPad just for Instapaper.

But what if you want a better experience right now while you’re reading in your browser? Filling that niche is Readability — a bookmarklet backed by a web service that strips away all the fluff from a webpage and presents just the text (with any important inline images) for your reading pleasure. Like Instapaper the reading experience is carefully tuned with a good selection of beautiful fonts set on clean, neutral backgrounds. You can also get along just fine with the defaults but have some options for customizing your experience if you want (mainly font size/type and background color).

Personally, I think Readability is a more important innovation than Instapaper. While Instapaper works best with a reading device like an iPad, Readability works on mostly anything that’s text-heavy on the web. Not only does it get bad design and unwanted ads out of the way, it’s also great for sites that are have font that is just a little too small, or columns that are just a little too narrow for comfortable reading on a wide screen. Personally I find myself reaching for Readability on anything that I find even slightly difficult to read. After all, it’s right there in my browser and takes barely a few seconds to beautify a page.

Readability on the web

Readability on the web

Alongside the aesthetic fixes, Readability also has a business model for sustaining ad-free reading on the web. 70% of the monthly $5 (or more if you like) fee gets sent to the content providers. For the individual reader, $5 a month is a tiny price to pay for a great reading experience. Multiply that by hundreds of thousands (millions?) and you get a business model that doesn’t depend exclusively on selling consumer information.

Both Instapaper and Readability (and similar apps like Reeder and Tweetmag) build on a set of basic principles to offer great, compelling products. They acknowledge that people like, and will pay for, thoughtfully designed and beautiful tools. Instead of trying to offer services for “free” and turning their users into products they tighten the loop between producers and consumers both in terms of product and financing. In the process they do what I would consider a public good: making the acquisition and production of knowledge a pleasurable, worthwhile experience.

We’re living in the years of the resurgence of the web as a communication and knowledge platform, rather than just an ad delivery vehicle. While video, music, animations and visualizations are making the web a more dynamic and vibrant environment, tools like Instapaper and Readability are ensuring the existence and growth of a web “designed for reading, not a web where reading happens despite the design“. And I for one like it that way.

April plans

Today is the 1st of April. It’s time for the internet to get out of control with craziness and ridiculous April’s Fools Day. Today was also registration day at college, meaning that all of us 20-something year-olds had to get up at 7 in the morning (known as the crack of dawn to most of us) and schedule next semesters dreary existence. It’s also the start of a new month and hopefully the start of good weather that actually lasts. Since it’s a new month, I decided it would be a good time to try doing things a little bit different. I suppose you could think of them as 30-day trials in some ways, but most of them are minor enough that I don’t think I need to use the ‘trial’ concept on them. In no particular order, here goes:

Writing daily: quantity over quality

I already write a fair amount, mostly in the form of blog posts and email. But I’m also prone to slacking off terribly. I’ve gone for a week at a time without writing anything substantial. Writing isn’t a day job for me, but it is something I enjoy, something I value and something I want to improve on. So I’m going to try a bit every day.

I’ve thought about doing this at various points in the past, but I’ve always agonized about the process. I would like to sit down at any computer and just write for a few minutes. But I could never decide how exactly to do it without having writing scattered all over the place. And I always knew in the back of my head that I needed to start down for an hour or so to actually write something of value.

I’ve always been a fan of quality over quantity, but for once I’m going to give it a rest. I’m going to write everyday in the hopes that the much increased throughput will produce a greater number of good works in the long run and it will also develop my writing skills (especially in terms of avoiding writer’s block and being able to switch into writing mode at the drop of a hat). When I have an extended period of time (an hour at least) I’ll write techie articles for this blog and when I have shorter snippets I’ll just dump them into documents on Google Docs.

Reading: everywhere, anytime

While I like to write, I like to read too. Unfortunately I don’t often have the time to sit down and read for a few hours at a time. On the other hand I have short bursts of time every now and then (5-10 minutes) and instead of just sitting right or looking at funny videos of cats, I want to spend that time reading. I’ve already read one book on my iPod Touch using little snippets of time here and there. Though I don’t think I’ll want to do that with all forms of literature, I can certainly do it for short pieces. I’m considering getting the Instapaper Pro app (which lets you save stuff you want to read) and offers some features like text extraction and font customization that I think will come in pretty handy.

Using both brain hemispheres

I’m going to be graduating in just over a year with two degrees: computer engineering. So yes, my left brain is going to be very well exercised. But I want my right brain to get some training too. In retrospect it might have been a good idea to pick up a studio art major, but I like what I have know.

In order to exercise my right hemisphere I’ve taken to looking at art and design. I don’t really study anything formally (though I among going to Italy over summer to study Renaissance Art) but I do observe and absorb. In particular I’ve been looking at data presentation and web design. I plan on spending some time building “blogazine“-like content on my website, probably centered about poetry and stories I’ve written before. I might even dabble in some hand-drawing (which I haven’t seriously done in years). Of course everything I do will be free for everyone to see and reuse.

Measuring my time usage

I often have days where I feel like I did a lot and didn’t really waste time, but didn’t quite accomplish much. I tried to apply the principle of “what you measure improves” by tracing all my time usage for a day. It turned out to be rather clumsy because I wanted a system where I could write things quickly and still get fairly good analytics on how I spent my time. Unfortunately paper is great for recording, but it sucks for analytics and most time tracking solutions I found were too heavy and expensive.

A few days ago I stumbled across a new webapp called Freckle which seems to hit the sweet spot between features and usability. All you do is enter a time (or use their timer bookmarklet), what project it was for and a bunch of tags and it gives you a set of fairly decent analytics. You have to pay for it and I just started a free month long trial. If I find that it actually works well, that I use it and that I’m getting more stuff done, then it’s a keeper and I’ll gladly fork over the $12 a month and wish them well.

Agile daily productivity

The agile development methodology eschews large complicated schedules and project plans in favor of smaller chunks of work, quicker feedback and review and greater flexibility. I’ve been an applying a similar system to my own daily workloads and it seems to be working, but I’ll be enforcing it better. Being a college student it makes absolutely no sense for me to have long schedules because every day brings new challenges (homework, tests, projects, random coffee drinking sessions) and any long-term plan would be shattered in a day. Instead I’m using a dual system: due dates to make sure I’m on track with my long term goals and shorter lists of daily and weekly tasks that need to be done. I’ll try to set aside large blocks of time for things like homework sets and fill in shorter blocks with reading and writing. I’m also consider doing weekly reviews but I’m not sure how much of a value that will provide to me right now.

All that probably seems like a lot and taken individually it is. But I’m going to try to collapse/multiplex them into a congruent workflow where I schedule with flexibility in mind. Ideally, I’ll spending large blocks of time on homework, programming and content creation with shorter blocks on light reading, practice writing and random errands that pop up now and again.

In 30 days my free trial of Freckle will run out and that’s also when I’ll sit down, take a deep breath and see if all this actually worked or not. If it doesn’t work, I’ll try to see what it failed and see if I can fix it. Even if it didn’t work, I’m sure there will be places to tweak and improve. And though I’m tired from having written this (and from everything else I’ve done and need to) I feel pretty excited for this month.

Reading in the computer age

Once upon a time, computers used to be used for computation. To some extent they still are. But for the millions of people with computers on their desks and in their bags and pockets, computers are more regularly used for communication. And no matter how much we might like video conferencing or VoIP, much of that communication is textual. People read and people write. A lot. I don’t have any definite statistics, but I think it’s fairly safe to say that the average person today writes and reads a lot more than they did ever before. While there has certainly been an increase in literacy levels over time due to a number of socio-economic reasons, technology has played no small part in the growth of human informational output (and input). Though there’s lots of ways to produce and distribute information, text is still the easiest and most popular and so it’s something I want to focus on.

World Literacy levels (from wikipedia)

World Literacy levels (from wikipedia)

With the rise of blogs and dead-easy online publishing tools, it’s become easier than ever for the common man to take part in an existing conversation or to start his own. Even more recently, microblogging tools like Twitter let you take textual snapshots of your life and start mini-conversations around them. Furthermore, social network sights let you create conversations around pretty much anything that you can find online (and a lot of what you find offline). FriendFeed and Facebook in particular do good jobs of encouraging conversations. While it’s become really easy to write and publish your thoughts (which I think is a very good thing), the first problem that creates is:

Who’s going to read all the stuff that’s out there?

Certainly not us. Let’s face it, there is far more text out there than any human could ever hope to read and comprehend in a reasonable amount of time. Being the tool-building primates that we are, the solution that we’ve started to come up with isn’t surprising: we have machines to do it for us. Search engines and the many recommendation tools are all essentially reading machines that go through all the text on the web and produce a very small subset that our limited human brains to handle. Sometimes the machines don’t quite do the job, so we need some human intervention a la Digg and Reddit.

But the question is still far from fully answered. Alex Payne of Twitter takes a long, hard look at the future of feed readers and comes to the conclusion that “feed readers as we’ve known them are dying” but neither algorithmic processing nor human-social-network filtering works well enough to be a viable replacement. I tend to agree and I don’t see a solution myself.

I prefer a judicious use of both computational and human filtering. I rely on Reddit and Hacker News to provide fresh, new information sources, and then use Google Reader or Diigo to collect, index and manage my readings. However, it’s not ideal and requires more manual work than I’m comfortable with. We will certainly need better semantic technology to make sense of the growing amount of data, thoughts and opinions out there. At the same time, it’s not just a question of finding and organizing information, but also of remembering it when we need to. This brings up Question 2.

How do I remember everything I’ve read?

I read a lot. I read books for school and pleasure. I read scholarly articles for research. I read blogs to get a continual stream of interesting ideas and information. I read articles that float to the top of social news sites. I read Twitter and Facebook to keep track of what my friends are doing (and sometimes to read things they’ve read and written). Even by a conservative estimate, I would say I read an average of 5000 words a day, probably more on some days. I’d be lying if I said I remembered even a fraction of this. I can remember perhaps the name of the article, maybe where I read it, a few keywords and phrases here and there. This isn’t just a case of bad memory, (though I’ll admit my memory’s not as good as it could be), part of it is a conscious decision not to hold in my mental RAM stuff I don’t need at the moment (or in the very near future).

It would be great if I could remember even detailed summaries of what I’d written, but in the absence of really good memory and recall, outsourcing my memory is the next best step. And it’s not just me. In the old days you’d have tons of bookmarks saved in your browser or maybe even save the HTML files to disk. I did a bit of both. Today I use social bookmarking in the form of Diigo and Zotero for managing journal articles PDFs. For any form of memory system, full search is a must. Loose organization is also essential. Dynamic, multiply redundant systems such as tags and keywords are superior to static filesystem-like organization. It would be nice if this tagging were smart and automatic, but even manual tagging is very useful. Highlighting and inserting notes is also helpful if used right and in proper amounts.

The main point of all these tools is to simply to make sure that you find what you’re looking for with minimal time and effort. In some ways, there’s a redistribution of effort to save-time from find-time in the form of tagging and the like. Some tools like DevonThink go a step further and automatically extract relationships between documents. Being able to highlight sections and add notes becomes useful if you’re reading articles as part of a research project. These tools aren’t perfect and certainly won’t do your thinking for you, but they are a step in the right direction.

Such tools only make sense if there’s really something you want to do with the information that you read. Thankfully there are a lot of things you could with it. You could (and probably do) share it with other people. You can also join the conversation surrounding any piece of text, either by commenting on it (if it supports comments) or posting the article to an aggregator like Reddit and commenting there. You could also use it as the base seed for your own independent piece. Personally I view all my reading as input that will ultimately get processed into some form of writing. In many cases it gets translated into blog posts, comments or email, but in many others its still waiting for the right time.

Writing in the 21st century deserves a blog post all its own. Since I’m already over a thousand words, my observations on writing are getting pushed to the next post. I want to explore the issues related to writing in a bit more depth because I feel they are a bit more nuanced (and as a writer myself, I have a serious stake in writing in the computer age). Stay tuned.

Programmers should read

For the longest time I believed that programming was all about writing code. However over the past year, I’ve slowly changed that opinion. I now think that reading is just as important as writing. Computer science is a huge and continually expanding field and as a programmer you’ll probably only be dealing with a very small segment of the problems out there. More importantly there is a significant amount of cross fertilization between parts of our field. The only way to keep abreast of all the developments is to read and read voraciously.

Though our field is still one of the youngest in the world (probably only genetics and nanotechnology is younger), there has been an incredible amount of knowledge generated in the last 60 years or so. We’ve come a long way and solved an awful lot of complicated problems along the way. All the collective knowledge of our field is locked into three primary sources:

  1. Thousands of articles, books and other publications
  2. Billions (maybe trillions of lines) of powerful computer code.
  3. A growing number of blogs, wikis and other easily accessible electronic forms, most of which are free.

Of course it is humanly impossible to read all of it. Okay, maybe it is possible, but then you’d never get around to doing any programming. The good news is that reading even a very small fraction of the total mass of computer science literature out there will give you a far better idea of what’s been done and what’s going on.

No matter what part of computer science you’re in, there are bound to be a few classics that are required reading for everyone in that area. These might be in the form of books or research papers (especially if you’re into theoretical aspects). Though these might be somewhat more difficult than the daily problems you are used to solving, there are probably only a handful of them, so it’s not going to take forever to get through them. And it will probably be worth your time to go through them with some rigor. Reading the classics and founding works of your area will give you a fresh perspective of your work and offer a valuable insight into the minds of the early pioneers.

Now that you’ve started you might as well keep going and read something more modern. A lot of the things that were significant problems 60 years ago aren’t problems anymore and it might come in handy to know what the solutions are. There are modern books of course, but in this case the Internet might prove a better source. You can always start from Wikipedia to get a general idea and then work from there. Being in such a dynamic field, it’s important for us to keep abreast of current happenings and developments. Enter the blog. Sure, many blogs are of questionable quality and there’s a very high noise content. But that being said, there are still a number of authoritative voices and it shouldn’t be very hard for you to find ones pertinent to your interests.

Blogs are important not just as news sources, but also because often they link to or mention sources of information that would otherwise have passed under your radar. Blog comments are often a vibrant (and sometimes vitriolic) medium of discussion, and you might often be led to question your own assumptions on the topic.

Finally there is reading code. Reading other people’s code is not always an easy thing to do. After all it does represent someone else’s thought patterns which might be very different from our own. It’s even harder if the code is badly written. However reading code is important, both good and bad code. If you don’t know what bad code is, you won’t be able to tell when you’re writing it. Luckily with the rise of open source, there’s a profusion of code out there. Again the same warnings apply: there’s a lot of crap out there and you have to be a bit careful as to what exactly you’re looking at. However, just as with blogs, there should be some well known source you can safely trust.

Since I started actively reading a few months, I’ve seen that I’ve become better at recognizing certain classes of problems and thinking of innovative solutions. I’ve also come to know of very interesting parts of our field which I would never have known of in a class setting. I’m still rather deficient when it comes to reading code, but that will be something I will work on over the rest of the year.