Category: Technology

I knew before you!

The Hulu Century Club

I’m delighted to announce that I’m a proud member of the Hulu Century Club. Yep, you heard it right — I was among the first 100 registered users on Hulu! Even I was unaware of this fact until a few days ago, when I received an email from Hulu:

I knew before you

Consider yourself one of the elite: You’re one of the first 100 registered users on Hulu.com. With our one-year anniversary coming on March 12th, we wanted to thank you for supporting us from the very beginning. We need just a few pieces of info in order to send you a little token of our appreciation.

hulu

So there you go, I knew before you!

Check out Synapse!

I can’t speak for all Linux users, but over the years I have sadly come to accept that the Linux community is usually sidelined and ignored by most vendors in the first release of any product — be it application software, device drivers or hardware. Even companies that stand on the shoulders of open-source software often treat Linux as a second-class citizen (case in point: Google with Chrome, Apple with Safari and numerous other products).

While there is plenty of Linux-specific software out there as well, most of it is to fill the void left by mainstream vendors. Consider the Instant Messaging world. Google Talk still has no native client for Linux. In fact, there is no really good and well supported chat client on Linux that reliably does voice as well as video chat. Yes, there are ways to make it work, but if they really worked, wouldn’t more people be using them?

A brave soul is making another attempt to change the status-quo. Enter Synapse: a refreshingn take on a Jabber/XMPP only IM client, designed especially for Linux. (Interistingly, Synapse is written using Qt/Mono, both of which are cross-platform, so it could easily run on other platforms as well).

Synapse

Quoting from the introductory blog post:

With all the focus on the web, a lot of people have been dismissing desktop operating systems as nothing more than something required to run a web browser. Unfortunately, Linux, which has suffered from unpolished UI applications for a while, has been hit especially hard by this trend.

Even though there have been lots of exciting advances to the platform (Mono, DBus, Cairo, Gstreamer, KDE4, etc.), few developers focus on supporting Linux, and Linux applications rarely receive the same polish and attention to detail as web applications.

Although it makes me unpopular, I’m not ready to give up on Linux software development. I feel strongly that there’s a place for both web and desktop applications, and exciting opportunities for integration between them.

I like many things about Synapse already:

  • a slick website
  • it uses git (and github)
  • provides packages for Ubuntu and some other distros
  • the app itself is visually interesting

Of course, many things don’t quite work yet (such as the ability to add multiple accounts!). But it definitely looks like a very interesting project, one that I’ll be watching very closely.

How to simulate Compiz’s screenshot plugin in KDE4

I used to run Compiz with KDE 3.5 and I quite liked that setup. Compiz was fast, highly (a bit too much, perhaps) configurable, and came with a great set of plugins. One of my favorite plugins was the screenshot plugin — basically it allowed me to capture arbitrary regions of the screen with a simple mouse+keyboard combo. This was particular useful when writing blogposts to demonstrate something on the desktop, when filing bug reports (to visually show what was going wrong), when telling webmasters what was wrong with their website (it makes everyone’s life easier if the screenshot only captures the problematic space on the page, not the entire window) and so on. The key strength of the plugin was that it was so easy to invoke, and the captured regions automatically got saved as PNGs to a pre-determined folder. Neat.

Unfortunately, with KDE4, I am no longer running Compiz since kwin (KDE’s native window manager) has built-in support for compositing now. KDE4 is great (especially with 4.2) but I still missed the screenshot plugin very much. I couldn’t find any equivalent plugins for KDE4, so I was on the lookout for a workaround. It turns out, there is one. Here is what you do:

  • Go into System Settings -> Input Actions
  • Create a new global shortcut (right click)
  • Bind a convenient shortcut — I use Super+S or Meta+S
  • For the command/URL, enter ‘kbackgroundsnapshot –region’ without the quotes, of course

And there you go — now you can simply press Super+S anywhere, anytime and the mouse cursor will change to a cross-bar. Once you have selected the region to capture, hit enter to save the picture, escape to cancel the action. By default the pictures are saved to your Desktop folder, and are named ‘snapshotX.png’ where X is some number. Here’s a screenshot that I just took:

kbackgroundsnapshot

What makes this work is the little-less known program (like so many other hidden gems in KDE) ‘kbackgroundsnapshot’. It is essentially ksnapshot, but it is supposed to run in the “background”, meaning that it doesn’t show the regular dialog box that ksnapshot shows. Useful for scripts and such.

Thematic: the final word in WordPress themes

Modular, Extensible

I’m a sucker for clean, well-designed code. I like modular, extensible architectures. I like change.

As a consequence, I struggle periodically with the theme of my website. Not that I am a designer and it is certainly not the most productive use of my time, but what can I say. The point is, I was never really happy with the infrastructure I had at my disposal (I am never happy with the designs that I come up with, so thats another story). Until now.

One of the main barriers in designing a custom theme is that you don’t want to scratch. It is just too much work, and why do it when so many others have already done all the hard work for you? It pays to be lazy! So I have always looked around for good starting points to build up custom themes on.

I started out with Sandbox, a semantically rich theme that allowed extensive customization just using CSS. However, styling via CSS can only get you so far. Sometimes you really do want to make changes to the underlying PHP, for instance.

My next setup involved a base copy of Sandbox on which I layered my changes. In order to accommodate changes to the underlying Sandbox code, I used Mercurial with patch queues (the mq extension). This was much nicer, since it was easy to keep up with changes to the core Sandbox and leverage the work that was being done by others. But it was still cumbersome, since once in a while I would run into conflicts that I would have to merge manually. And it was still not a clean setup.

My ideal setup would have been to keep my changes completely distinct and isolated from the underlying theme. A setup that would allow the underlying theme to evolve independently, while my changes continue to work without any additional work.

Thanks to improved support for child themes in WordPress 2.7, and some fantastic work done by these fine folk, I have realized this ideal setup.

You see, I recently started working on a new website for my wife (it is not live yet, but will be soon). In the process of building her website, I was exploring the so-called WordPress Theme Frameworks. After some playing around, I settled on using Thematic. I started out by cloning the Thematic repository. Locally, I was using git-svn to manage the code changes. Thanks to git-rebase, it was not that hard to keep my changes up-to-date relative to a rapidly evolving Thematic code base.

But soon enough, Thematic had enough hooks, filters and features that I could do all the modifications without modifying a single line of Thematic itself. Now, all my changes are contained entirely within a child theme. How it is possible? Well, Thematic happens to be pretty much the most child-theme friendly framework that I could find. It is really easy to customize.  Several child themes are already available for immediate use, and it is trivial to develop your own child theme.

This blog is going to run on a Thematic child theme. Changes are going to be incremental, but I don’t need to worry about keeping them in sync with Thematic, and I get to leverage the improvements being done in the core them for free! You can also take a sneak peak at how we are using Thematic for my wife’s new website

Above the clouds

A few days back, this whitepaper made the rounds of the blogosphere. It is basically a survey report of cloud computing by some folks at RADLabs in UC Berkeley. I had the paper on my reading list since then and I finally go around to reading it today.

It was a good read, but nothing in the paper should come as a surprise to anyone who has been following the cloud computing space. Content aside, I had quite a few (albeit, minor) issues with the writing of the paper. I am guessing it might be due, in part, to the long list of authors.

  • lots and lots of repetition (such as Table 1 and Table 6)
  • sloppy writing in many places, broken sentences, undefined acronyms and such
  • you get the idea

But I think the paper does a very good job of laying out the landscape for people who want to learn about cloud computing, and also gives a high “big picture” view for people who are already in this space. I particularly liked the discussions on how to decide whether a move to the cloud is worth it, financially and otherwise.

The list of the top-10 challenges and opportunities is also interesting. I’m always intrigued by how problems can always be distilled down to “top 3″ or “top 5″ or “top 10″ :-) I personally think that debugging distributed systems should have been ranked higher in the list. Data lock-in, and overall visibility/transparency are I think the biggest inhibitors for adoption, especially in the enterprise.

Virtualization is playing a key role in pretty much all cloud computing efforts. But we are far from the “perfect isolation” promise of VMs. I did some work back in 2006 on improving the performance isolation among VMs in Xen and many of those issues still remain.