To thine own reading habits be true

It’s been about two weeks since the untimely demise of our dearly beloved Google Reader. Since then many replacements have been stepping up to the plate. I’ve been using Feedly, but I hear good things about Digg Reader too. A few days after that Anil Dash wrote a post entitled “The Golden Age of RSS” where, among other things, he provides a very long list of RSS readers across various platforms. He also makes four suggestions about improving the state of the RSS ecosystem and two of those four are about the actual reading experience. While I have immense respect for Mr. Dash (and Dave Winer), I’m not excited by either of his suggestions.

First off, Mr. Dash seems to not be a big fan of the mailbox style of displaying feeds (a la Google Reader) or the magazine style (a la Pinterest and Feedly). He seems to rather favor Winer’s river of news style. Secondly, he says that he wants a blog reader — essentially a single site RSS reader that kicks in when you visit the site and gives you a content-focused, style-independent view of the site. While both of these suggestions seem interesting (and I hope someone picks them up and does cool things with them) neither of them is particularly appealing to me.

Personally, I like the mailbox-style of reading feeds. I like to be able to look through a list of titles, read the ones that sound interesting, and get rid of the rest (currently by mass marking them as “read” — not the best interface, but it gets the job done). I don’t want a river of news — I want a digest of interesting things that I can read at my own leisure, irrespective of when the author posted them. My RSS reading list isn’t a source of news, it’s a selection of authors who write interesting pieces and whose posts I don’t want to miss. Now, an argument could be made that if some post is really good, it will filter through my Twitter or Facebook circles and I’ll hear about it. But I have neither the time nor the energy to sift through those streams to find interesting things my friends are posting. I’d rather just have the good stuff come directly to a single known location. And this brings me to Mr. Dash’s second recommendation (and why I disagree with it). I don’t see much personal value in the sort of site-specific reader he wants. The whole point of having RSS for me is that I don’t have to visit the website. See above arguments for a central location for posts from approved sources.

Does this mean that river-of-news or site specific RSS readers are a bad idea? No, of course not. Anil Dash and Dave Winer are both very intelligent people with proven track records and if they’re advocating something it’s worth looking into. All I’m saying is that they’re not the best idea for me. Reading habits are a very personal thing. We like to read different sorts of things and we like to read them in different ways. Dave Winer likes to be plugged into a river of news, I prefer to have a stack of articles waiting for me at the end of the day.

I truly believe that the web is a democratic medium — it allows us to define both how we publish and consume content (within limits). While we’ve explored the publishing aspect in lots of different ways (sites, blogs, tumblelogs, podcasts, microblogs, photoblogs, vlogs), the consumption side has perhaps seen a little less action. The death of Google Reader seems to have sparked a new burst of RSS-related innovation. Once we’re done picking our favorite clone, moving our lists and syncing our devices, maybe we can think about how to make the consumption experience as democratic as the publishing experience.

Comments need to be in blog order

Most blogs on the web are in reverse chronological order — the most recent article shows up first. I think this works pretty well for a reader, because you get to see the most recent, current state of the blog and if you like what you can see then you can easily dig deeper. Also, you can easily see if a blog has been inactive for a long time and move on if you don’t care about the back-issues. I’m going to be calling this ordering “blog order” for the rest of the post.

Comments on blogs are typically in the opposite order. The first comment you see will be the oldest and the most recent comment will be at the end. In some ways this makes sense. The comments are generally conversations that people are having about the post. It makes sense to have the comments in chronological order so that people can follow the conversation as it progresses and so that people read what other people have written before commenting themselves. However, this doesn’t really scale beyond a few dozen comments. There are going to be very few people who will care to follow a conversation that spans a hundred comments. The majority of people care more about expressing what they have to say than about reading in depth about the rest of the conversation. Of course this means that there is going to be repetition because these people haven’t read what’s written before.

For me there is another aspect that I think is worse than some repetition. Seeing a line of a few hundred comments I often decide not to write a comment at all. After all, my comment is going straight to the end of the line and how many people (apart from the original post author) are seriously going to take the time to go that deep to read my comment? As a writer of blog I think that is a serious issue because I don’t people staying away from from commenting because they think no one is going to read their comments.

What if blog comments were also in blog order? That way, the most recent comments are on top and readers get encouraged to write their thoughts. But this makes the repetition problem even more serious and also threatens the conversation nature of the comment system. You can’t really get in on a conversation unless you know what has been talked about before. Putting comments in blog order makes it easy to miss previous conversations and again reduces the effectiveness of comments as community builders.

Instead of making the comment the unit of organization, what if we shift focus to the conversation thread? Let’s take the most recent conversation thread and bump it to the top. Inside each thread, the individual comments are still in chronological order. This ordering has two important characteristics:

  1. The newest, most active conversations rise to the top. Readers can see what others are talking about and join right in. And if there aren’t and long conversations currently going on, the latest comment is on top helping individual comments get read.
  2. Each conversation is chronological encouraging readers to read through what’s been said before adding their own contribution.

The idea to emphasize the conversation over the discrete message isn’t new: it’s the main distinction that separates forums from email. It’s also the reason Gmail is so awesome: excellent support for threaded conversations. There are of course challenges to be addressed, especially in terms of UI and how to deal with threads that encapsulate divergent conversations. But these problems will only get addressed as they become more common. I think it’s about time that the web moved from the flat chronological comment system that is so popular to a richer, more useful one that plays an active role in fostering conversations and community.

On Essays

I’ve been thinking about essays on and off for the past few days. It all started when I was in the process of updating my static HTML website that I call Basu:shr. I have a section called essays which is currently populated mostly with papers that I wrote for various courses at college. Looking over some of my older work I realized that I didn’t really write longer pieces anymore. This blog is my primary writing activity at the moment and most of my posts are in the 700 to 1000 word range. I’m perfectly happy writing short articles because I’ve always admired brevity and conciseness (which is why I like Twitter as well). But at the same time, I’m slightly worried that I might be losing the ability of writing longer, more detailed pieces.

Ars Longa, Vita Brevis

As I’ve pondered before, life is short and it takes a fair amount of dedicated effort and time to come up with something beautiful and useful. With the rise of the Internet and instantaneous communications, we’re becoming a culture that is very much used to continuous streams of small information packets. The essay is becoming a holdover from the old days when having long periods of times to do nothing but sit and read was common. However, there are a number of really good essayists alive today, and a lot of them are on the Internet. There’s Paul Graham, whose essays are practically the stuff of legend for programmers. There is also Steve Yegge who seems to have retired, but left behind a fairly large collection of essay-length material (including an article on why you should write a blog). Outside the Internet there is Warren Buffet who has written long detailed letters to shareholders for the last 32 years each of which is an education in and of itself (and I can’t help but wonder how many shareholders actually read through them all).

I don’t think I’m making a mistake when I say that the essay is still alive and well today, albeit in somewhat modified forms. But the fact remains that putting out something of such length and depth takes up a lot of time and energy (not to mention the countless hours that go into accumulating the knowledge and organizing the thoughts that must flow into such a work). In many ways, writing an essay is similar to a software project. There is planning and preparation that must happen upfront, but nothing is really for certain until you sit down and start writing. Writing a good essay that other people will want to read and tell their friends about is no easier than writing good software that others will want to use.

Blog meet Essay

The blog and the essay are fundamentally different things. A blog is a magazine compared to an essay’s book. The blog as a format is great for some things: without easy blogging I probably wouldn’t be writing at all. But the rise of blogs (and accompanying software) has left the long form essay in the dark. You could simply write long articles and put them on your blog like Steve Yegge. But reverse chronological ordering really isn’t the best format for a collection of essays. For small numbers, a simple list of titles, maybe with a blurb is probably the best. Once you get to a larger number (Paul Graham for example), a simple list doesn’t cut it any more.

There is also the actual writing experience. Whenever you write a longer piece over the course of many days, you start to go back and visit the old parts. Part of it is for editing, but you also want to read what you’ve read before so that you know you’re keeping your essay coherent. Blog software doesn’t easily let you do this. I know WordPress stores revisions, but there doesn’t seem to be an easy, upfront way to see diffs of different versions against each other. I suppose a wiki could be better as an essay platform. Dokuwiki has excellent visual diff function and Writeboard also lets you compare versions.

Perhaps we do need some sort of specialized software for writing essays. Something that puts drafting editing at the center as opposed to at the edges. Personally I’ve been using Emacs with Git to get some of the same result, but I would really like to see a webapp that can do something like that. After all, there isn’t much use in writing an essay if no one is going to read it (and how better to get people to read it than to put it out on the Internet).

I, Essayist

Even though there may be no quick-and-easy publishing solution like WordPress for essays, writing an essay is far less dependent on tech tools than most other things today. Like I said before, Emacs and Git do a fairly good job together. I would like to be able to put all my drafts online with some sort of commenting system so that people can see the evolution of my essays, but I’ll settle for just being able to show a final product.

Separate from showing the essay is the mental exercise of actually sitting down and writing the essay (and then revising and editing). That’s something that I’ll have to get back into the habit of doing and will probably take time. Subject matter is also an issue, but a good starting point would be to simply expand on the themes that I cover in this blog, while making sure that people who read my blog can read my essays without getting bored (and vice versa). Expect my first essay to be on essays, sometime in the next few weeks.

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.

Blog posts or essays?

Between my work, traveling back to home and frequent power cuts, my blogging hasn’t been very regular recently. I haven’t been suffering from any sort of writer’s block, in fact I have a list of about 7-8 topics that I’d like to write about. However there has been one thing that has kept bothering me for quite some time: the size of my postings. I’ve been trying to use this blog as a way to tell the world about the things that I learn and discover as I pursue my career as a computer science student. However many of the things that I deal with daily and which I think about are quite complex and takes long discussion to get everything together. At the same time I would like to be able to post new things everyday or at least every alternate day. Often these two things don’t really go together add being an avid reader myself, I understand that it can be very trying to read something long on a topic like computer science. Hence the question: do I write small compact blog posts on a regular basis, or do I write longer essay-style posts where I can talk at length about the topic?

I’ve been looking at some of my favorite technology oriented bloggers to possible solutions to my dilemma. My favorite bloggers is Steve Yegge, who without fail writes long, sometimes rambling, but always interesting essays on an approximately bimonthly basis. While I find his essays thoroughly entertaining, they are a bit too big for something that I would want to write. More importantly, I certainly want to post more regularly than twice a month. Paul Graham’s essays are somewhat shorter, but are also published at a similar frequencies. Again, brilliant, but not quite what I’m aiming for.

Perhaps the closest to what I’m acheiving would be Jeff Atwood’s Coding Horror. Atwood posts regularly (almost everyday) and his posts are of a good length, long enough to make you feel a sense of actually reading something worthwhile, while being short enough that you don’t need to set apart an entire hour to go through them. Though occasionally he does err on the side of excess, they are nowhere as long as Yegge’s posts.

Of course, length isn’t a separate consideration in itself. It’s closely tied to the content of what I write. Recently I’ve been writing more from a software engineering standpoint, though I would like to write posts of a slightly more theoretical nature (especially since I’m getting increasingly interested in compilers and programming languages). While I’m willing to accept that such topics might require slightly lengthier posts, I really don’t want to turn my posts into mini-theses.

Long blog posts also mean longer time investments on my part, something that is a very important consideration because of the heavy course load I plan on taking. Perhaps the best way for me to decide the issue is to think about how much time I would be willing to invest on a daily basis. On average a blog post right now takes me about 40 minutes to one hour to write. I think that it is a good amount of time for me to spend write now. Considering my typing speed, that translates to about 1000 thousands, even considering looking up pertinent links and confirming information. 1000 words might be pushing it a bit, (that’s about one average sized college paper), but much less would probably be too small for me to clearly say everything. 800 to 1000 words seems like a decent size from what I’ve been reading. I think a good idea would be to to have a number of sections which are more or less self-contained in terms of content.

I’m going to trying to work on trying to control my size and structure. However at the same time, my primary concern will be content, so even if I need to write longer or shorter posts to give a coherent, well paced account of everything I need to say, so be it. I’m sure my readers read other tech blogs, so any comments as to what you prefer would be good very much appreciated.