BLOG

From my roommate Tim’s New Zealand travelogue, that I recently discovered:
The whole cost? Twenty-five dollars (and those are New Zealand dollars, it was $13 American).
For the curious ones among you, he has strained his lateral tendons and may have inflamed some of the nerves in his arm. If it’s not better in six weeks, we’ll find another clinic and he’ll be taking care of for twelve dollars. Amazing.
The woman we were staying with described the wonders of socialized medicine and reasonable pension plans and all things New Zealand. All I could think about was how much it all cost and how it was paid for. She seemed to anticipate my question and explained “Of course it helps when you’re not paying to build nuclear weapons and fight illegal wars.” There it is. As a country, the United States has chosen war and destruction over education, medicine, science, and infrastructure. What a choice.
This is why travel is important. It allows you to see other systems, meet other people, and experience the roads not taken. It makes you a better citizen of the world and of your community. The world is a big place and you should always try to see more of it than you have. And there the lesson ends.
From Eyewriter:
Tony was diagnosed with ALS in 2003, a disease which has left him almost completely physically paralyzed… except for his eyes. This international team is working together to create a low-cost, open source eye-tracking system that will allow ALS patients to draw using just their eyes. The long-term goal is to create a professional/social network of software developers, hardware hackers, urban projection artists and ALS patients from around the world who are using local materials and open source research to creatively connect and make eye art.
Also see Dasher.
From a craigslist post, Letter to my dead girlfriend, via reddit:
Last weekend I finally took the step of cleaning out your clothes from the closet, which is very barren now. I invited your friends over to take your what they liked, it was an awkward session. I think they took them more as a favor to me than anything else. Liz cried when we pulled out all of your shoes, Miranda joined in and then Catherine broke down. It was strange to stand in our bedroom surrounded by three crying girls. I made a joke about them crying for joy at the prospect of some free Manolo Balhniks which they didn’t seem to find very funny.
One day, many decades in the future, some enterprising literature grad student will compile and analyze the gems Craigslist has to offer.
Indian Ocean’s percussionist and singer, Asheem Chakravarty passed away yesterday after a heart attack. This is truly sad news; Indian Ocean is one of my favorite bands and I have been to many of their concerts. Losing a member of a band as tight-knit and flawless as Indian Ocean is quite a big blow. My heart goes out to Asheem’s family and friends, Sushmit, Rahul, and Amit.
Asheem’s percussion was the backbone of the band, and if you listen carefully you’ll notice that it only stops for one thing — his vocal solos (This is why having 2 percussionists in a band is awesome). My most distinctive memory of Asheem is his solo singing of a sloka that opens a song from the Kandisa album, Khajuraho:
Brahmanandam parama sukhadam kevalam jnanamurtim dvandvaateetam gagana sadrusam tatvamasyadi lakshyam ekam nityam vimala machalam sarvadheesaakshibuutam bhaavaateetam triguna rahitam sadgurum tam namaami.
(Rough translation from here — “I salute to that true teacher who is the source of eternal bliss, supreme happiness, who has true wisdom who is beyond the dualities, who is infinite, whose attention is always on the divine, who is unique, eternal, pure, steady, and who sees with the eyes of wisdom who is beyond thoughts and beyond three faculties.”)
I am thankful for the wonderful rendition of slokas that are thousands of years old into your songs and making this accessible to our “pop-rock” generation. You may not be with us any more, but your voice and your tabla will echo in the universe forever. Rest in peace.
To continue the tradition of two years (2007, and 2008), here is a list of cities I have been in 2009. It seems quieter than the last few, but I realized some of them were multiple trips and extended stays. I hope 2010 is a longer list!
Recent additions to my /etc/hosts file:
#arnab addiction -- cold turkey time
127.0.0.1 facebook.com
127.0.0.1 www.facebook.com
127.0.0.1 twitter.com
127.0.0.1 www.twitter.com
127.0.0.1 api.twitter.com
127.0.0.1 techcrunch.com
127.0.0.1 www.techcrunch.com
127.0.0.1 www.engadget.com
127.0.0.1 engadget.com
127.0.0.1 reddit.com
127.0.0.1 www.reddit.com
127.0.0.1 digg.com
127.0.0.1 www.digg.com
127.0.0.1 slashdot.org
127.0.0.1 www.slashdot.org
127.0.0.1 hulu.com
127.0.0.1 www.hulu.com
This is a meta post describing two features on this blog that I don’t think I’ve documented before. Apologies for the navel-gazing, I hope there’s enough useful information here to make it worth reading
Most folks read my blog through the RSS feed, but those who peruse the web version get to see many different forms of navigational aids to help the user around the website. Since the blog runs on Drupal , I get to deploy all sorts of fun stuff. One example is the Similar Entries module, that uses MySQL’s FULLTEXT similarity to show possibly related posts1. This allows you to jump around on the website reading posts similar to each other, which is especially useful for readers who come in from a search engine result page. For example, they may come in looking for Magic Bus for the iPhone , but given that they’re probable iPhone users, they may be interested in the amusing DIY iPhone Speakers post.

The Timeline Footer
However, given that this blog has amassed about a thousand posts over seven years now, it becomes hard to expose an “overview” of that much information to the reader in a concise manner. Serendipitous browsing can only go so far. Since this is a personal blog, it is interesting to appreciate the chronological aspect of posts. Many blogs have a “calendar archive” to do this, but somehow I find them unappealing; they occupy too much screen space for the amount of information they deliver. My answer to this is a chronological histogram, which shows the frequency of posts over time:

Each bar represents the number of blog posts I posted that month, starting from August 2002 until now2. Moving your mouse over each bar tells you which month it is. This visualization presents many interesting bits of information. On a personal note, it clearly represents many stages of my life. June of 2005 was a great month for my blog — it had the highest number of posts, possibly related to the fact that I had just moved to Bangalore, a city with and active Blogging community. There are noticeable dips that reflect extended periods of travel and bigger projects.
In the background, this is all done by a simple SELECT COUNT(*) FROM nodes GROUP BY month type query. Some smoothing is applied to the counts due to the high variance, for my usage, Height = Log base 4 (frequency) gave me pretty good results. This goes into a PHP block, which is then displayed at the footer of every blog page. The Drupal PHP snippets section is a great place to start to do things like this. Note that the chart is pure HTML / CSS; there is no Javascript involved3.
The Dot Header
Many of my posts are manually categorized using Drupal’s excellent taxonomy system. A traditional solution to this is to create sections, so that the user can easily browse through all my Poems or my nerdy posts. The problem is that this blog contains notes and links to things that I think are “interesting”, a classification that has constantly evolved as my interests have changed over the past decade. Not only is it hard for me to box myself into a fixed set of categories, maintaining the evolution of these categories across 7+ years is not something I want to deal with every day.

This is where tags and automatic term extraction come in. As you can see in the top footer of the blog mainpage , each dot is a topic, automatically extracted from all posts on the website. I list the top 60 topics in alphabetical order, where each topic is also a valid taxonomy term. The aesthetics are inspired by the RaphaelJS dots demo, but just like the previous visualization, it is done using pure CSS + HTML. The size and color of the dot is based on the number of items that contain that term. Hovering over each dot gives you the label and count for that dot, clicking them takes you to an index of posts with that term. This gives me a concise and maintainable way to tell the user what kinds of things I write about. It also addresses a problem that a lot of my readers have — they either care only about the tech-related posts (click on the biggest purple dot!), or only about the non-tech posts (look for the “poetry” dot in the last row!).
This visualization works by first automatically extracting terms from each post. This is done using the OpenCalais module (I used to previously use Yahoo’s Term Extractor, but switched since it seems Yahoo!‘s extractor is scheduled to be decommissioned soon). The visualization is updated constantly using a cached GROUP BY block similar to the previous visualization, this time grouped on the taxnomy term. This lets me add new posts as often as I like, tags are automatically generated and are reflected in the visualization without me having to do anything.
So that’s it, two simple graphical ways to represent content. I know that the two visualizations aren’t the best thing since sliced bread and probably wont solve World Peace, but it’s an attempt to encourage discoverability of content on the site. Comments are welcome!
—
Footnotes:
1 I actually created that module (and the CAPTCHA module) over four years ago; they’ve been maintained and overhauled by other good folks since.
2 Arnab’s World is older than that (possibly 1997 — hence the childish name!), but that’s the oldest blog post I could recover.
3 I have nothing against Javascript, it’s just that CSS tends to be easier to manage and usually more responsive. Also, the HTML generated is probably not valid and is SUPER inefficient + ugly. Hopefully I will have time to clean this up sometime in the future.
If you’re a recent convert to Mac OS X (Tiger / Leopard / Snow Leopard / etc) or someone who uses multiple operating systems at the same time, the differences in mouse and keyword shortcuts get confusing, even irritating sometimes. One of the most irritating ones for me is the difference in what happens when you middle-click on the mouse.
In Windows / Linux, middle clicking in browsers is used to open and close tabs. In OS X, this doesn’t work because middle click is used to trigger the Dashboard. Every time I would want to open or close a tab, the dashboard would show up! To disable this, all you have to do is go to System Preferences > Exposé & Spaces and set the mouse shortcut to “-”.
For the newbies, here’s a screenshot guide. First select “System Preferences”:

Then click on the “Exposé & Spaces” button:

Set the “Dashboard” mouse shortcut to “—” :

So that it looks like this:

And that’s it! You will now be able to middle click to open and close tabs in Mozilla Firefox and Google Chrome. For Safari, you can open tabs, but closing tabs don’t work.
And there you have it, middle click tabs on Mac OS X!