Skip to main content


Showing posts from February, 2009

Fantastic Four Firefox Addons

Update: This post is outdated, I created a Firefox Addon collection

I use only 4 firefox Addons. (I am guessing this may come down to 3 with FF3.1's Tabbing features). These four make the slickest and most productive FF for me.

Firebug - A Must for all Web Developers. One stop for all development.

Tab Mix Plus - Well there is some anticipation on the tabbing features coming in 3.1, but until then (or may be even after..), this one is a must have.

DownThemAll! - The best download manager. Very nice replacement for the not-so-friendly defaulter.

GrandCentral Click to Call - For those who use grandcentral, this is awesome. To be able to click a number on a webpage and place a call is one step closer to getting dead lazy

Don't Print

Dont print that email/document. Its not a request. Its a real, honest, warning. Dont do it. You must be really out of this world, or of the last millenium, or simply a silicon dimwit to use that printer instead of using it electronically.

In the first place, you are consuming (carelessly) yet another enviromentally expensive resource. No, not the paper. The Tree (do you know how long it takes for a tree to be ready for paper manufacturing? and all those chemicals used to make it?). On the other hand, it is much easier to search an electronic catalog than manually looking up a drawer full of business requirements in hard copy. Instead of printing those comminucation emails, jira tickets, corporate bills, use case documents (and the list goes on..) - scan them / store digitally. Many of these start off as electronic documents. Use those. You can make it worth even more by using Google Desktop search or similar tools. Much worse is printing books/study material for *reference*. Are you k…

Use meld as git diff gui viewer

Meld is a popular diff viewer in linux (gnome). It is extremely light weight. UI is very similar to WinDiff. Although it is not comprehensively robust yet, It is still a great help for people like me, handicapped to read huge diffs in command line.

Git is awesome when it comes to managing version control, esp in command line. However, while committing, you would want to check what changes are going in. git gives git-diff for this purpose. Spitting out a (unified) diff format text for showing changes. But reading this could be cumbersome at times. To visually inspect git diff, you can use the latest version of meld. The version that comes with debian or ubuntu 1.1.5 lacks git support. You need to build the latest meld (I got 1.2.1) from source. Here is how you can do it.
resolve dependencies: sudo apt-get install pyorbit pygtk gnome-python intltoolGet the source from here (opens new window).Extract the archive.In the exploded directory, run make.It makes an executable meldRun meld path/…

Site now running on django 1.0

hence the bump in minor version - 3.1

While researching on grails and the patterns around it, I looked at django, rails, and lift. All these are quite amazing frameworks that get you started on an application like in 5 mins or less (That includes database layer, view pages, and controllers). Yeah it cannot do everything you want but its there to get you to kick off.

And then I realized, how much effort I am putting in maintaining my site on hand coded - wsgi.webapp based - Python app. So I started working to move this to django based multi app site. If you dont know, I host this site on Google App Engine. It does come with a patched, short featured, django of its own. However, I preferred to use app-engine-patch and deploy with a supplied django 1.0. You get most benefits of django with this port. A very big tip of hat to Waldemar Kornewald and his team for this patch. (Guess what, They also have a similar concept of stitching mutiple js/css files - media generator)

I can see how rap…

Faster webpages fewer Images with CSS Sprites

In a previous post, I have made a point how to improve performance by reduce HTTP connections by stitching together content of css and js fragments. At that time I also mentioned a way to do it further is to reduce the number of images on a page. Because images are also loaded on HTTP connections. Again the same Cache-Control headers on the client can be used to reduce much of this traffic. But to reduce the Number of HTTP connections, You can employ a technique called CSS Sprites.

I have to confess, I don't know about this technique until I was researching on GWT's ImageBundle interface. Had I known this trick, my SarathOnline2.0 site would not have been lame - text only!

Simply the technique is to stitch all images together into one big image. This big image is called a Sprite. The images used on my site are sprite-d as shown on the left. How do we display them seperately? Using css backgrounds. To achieve this We will send a blank 1px gif. Then insert an img tag with src=bl…

Javascript: Convert Strings to Binary (and representing in a nerdy way!)

I follow those GoogleDevelopers Videos. Sometime back, in one of the presentations on GoogleIO, there was this interesting string of dots at the bottom of each page of the presentation. They looked like random big and small dots. A similar bunch of dots were also on the T-shirt of a presenter was wearing in another presentation. While it seemed something in the pattern, I could not find what it was. Finally, another presenter cleared the matter that those dots are just binary representation of "GOOGLEIO" (So much for advertizing Google IO, Impressive!).

So I wanna do it. Takes me back to days of those DSP classes at school. Nerdy me had to churn some old brain cells. I remember those first programming language classes in Pascal and C when you were asked to do fibonacci series and converting a binary string to ascii codes. That *experience* came handy here: Check it out!

Text to Binarize:
For those who came to copy the javascript code to convert string to binary, Here it is…

Decorator for Memcache Get/Set in python

I have suggested some time back that you could modularize and stitch together fragments of js and css to spit out in one HTTP connection. That makes the page load faster. I also indicated that there ways to tune them by adding cache-control headers.

On the server-side however, you could have a memcache layer on the stitching operation. This saves a lot of Resources (CPU) on your server. I will demonstrate this using a python script I use currently on my site to generate the combined js and css fragments.

So My stitching method is like this
@memize(region="jscss") def joinAndPut(files, ext): res = files.split("/") o = StringIO.StringIO() for f in res: writeFileTo(o, ext + "/" + f + "." + ext) #writes file out ret = o.getvalue() o.close() return ret;
The method joinAndPut is *decorated* by memize. What this means is, all calls to joinAndPut are now wrapped (at runtime) with the logic in memize. All you want do is u…

Define Freedom - Blogging and Media

Before I start, I want to make a few points clear. I have no contempt for either Mrs. Dutt or Mr. Kunte. Neither do I have any allegation or support for either. What I am writing, is my personal view and believe in strongest sense what and how one need to be thinking.

Everything ever is a fight in India. Truth, Freedom, Life itself. What we see here is just another classic case. In short: Barkha Dutt's coverage on 26/11 aired on NDTV while millions watched out of curiosity (for information and to quench anxiety). One Mr.Kunte in his limited reach tried to push his thoughts around. Mrs. Dutt brings in a lawsuit, and Mr Kunte. 3 months later posts a "not-for-comment" withdrawl post with specific points that have been objected. Mrs. Dutt has her own explaination too.

Thats what it is. It is neither reporting nor blogging. Its just some series of words in English formed to sentences and put to some meaning. How you want to read it is your choice. If you are Barkha or her adm…