Software architecture

November 3rd, 2011

“Software Architecture: The art of decomposing solutions into components so that they communicate efficiently.”

From a conversation with Praseed Pai

Dennis Ritchie has passed on

October 13th, 2011

A great man has passed on, leaving behind a brilliant legacy.

Mourn Dennis Ritchie.

People who use computers, turn on your Macs, GNU/Linux machines, *nix based operating systems, iPhone, Androids, and remember him., for what lies beneath it all, came from his mind.

Programmers, remember the first time you met C. Remember the first time you met Unix. Write a C program. Make it print Bye bye Dennis.

Mourn the man who gave you the “Unix way”, about how simple things that do one thing and one thing only, hook up to make great software.

Think about the joys of being a Unix user.

Lift your hands off the keyboard, and think about how awesome it is to be a programmer.

And then remember that you are standing on giants’ shoulders – one of them has fallen.

RIP Dennis.

http://en.wikipedia.org/wiki/Dennis_Ritchie

Mark Pilgrim’s philosophy …Preserved

October 11th, 2011
  1. Stop buying stuff you don’t need
  2. Pay off all your credit cards
  3. Get rid of all the stuff that doesn’t fit in your house/apartment (storage lockers, etc.)
  4. Get rid of all the stuff that doesn’t fit on the first floor of your house (attic, garage, etc.)
  5. Get rid of all the stuff that doesn’t fit in one room of your house
  6. Get rid of all the stuff that doesn’t fit in a suitcase
  7. Get rid of all the stuff that doesn’t fit in a backpack
  8. Get rid of the backpack

Mark was working on 4th. I am on 1.

രൂപായും…വൃത്തികെട്ട ടെക് റിപ്പോര്‍ട്ടിങ്ങും…വീണ്ടും

July 21st, 2011
The following is a result of thoughts I gathered from a conversation with Santhosh Thottingal.

ശ്ശൊ ആ പാവം ഫൊറാഡിയാന്‍ ടീമിനെ പണ്ട് തെറി വിളിച്ച് എഴുതിയ ഒരു പോസ്റ്റുണ്ട്. ഞാന്‍ അന്നേ പറഞ്ഞതാ മണ്ടത്തരം പ്രോത്സാഹിപ്പിക്കരുത് എന്ന്. മൂക്ക് കൊണ്ട്  W വരക്കേണ്ടിവരും എന്നും.

ദേ ഇപ്പോ കാര്യങ്ങള്‍ പോകുന്നത് കണ്ടിട്ട്  W പോയിട്ട് ക്ഷത്രജ്ഞ മുഴുവന്‍ എഴുതിയാലും തീരാത്ത പ്രശ്നങ്ങളാ വരുന്നത്.  കണ്ടവന്‍ കണ്ടവന്‍ രൂപാ ചിഹ്നം എളുപ്പത്തില്‍ ടൈപ്പ് ചെയ്യാനായി തോന്നുന്നിടത്ത് ഗ്ളിഫ് മാറ്റി പ്രതിഷ്ഠിച്ച് ഫോണ്ടുകള്‍ ഉപയോഗിക്കാന്‍ തുടങ്ങിയിരിക്കുന്നു. ചരിത്രം ആവര്‍ത്തിക്കും എന്ന് ചാത്തന്‍സ് പണ്ടേ അരുള്‍ ചെയ്തിതിട്ടുള്ളതാണല്ലോ.

ഉദാ…. വേണ്ടേ ? ദേ കെടക്കുന്നു ഉദാ.

ഉദാ.1

നമ്മുടെ മാണിസാറിന്റെ ധവള ( ഓ ചുമ്മാ !!) പത്രം വായിക്കണേല്‍ ലത് പീഡീയെഫായി കിട്ടും. ദിവിടുന്നു.  ആ ലവനെ തുറക്കുക. കുശന്‍ നോക്കിയാല്‍ രൂപാ ചിഹ്നം കാണാം. നോക്കിയേ ?

കണ്ടാ ? രൂപാ ചിഹ്നം ഞെളിഞ്ഞ് നിക്കുവല്ലേ ? ഇന്നി പതുക്കെ അവനെ കോപ്പി ചെയ്. എന്നിട്ട് വേറെ ഒരു ടെക്സ്റ്റ് എഡിറ്ററേലോട്ട് പേസ്റ്റ് മാഡ് .

"A cash balance of A 3881.94 crore was"

കണ്ടാ കള്ളക്കളി ? യെവിടെപ്പോയി ആ രൂവാ ? പകരം വന്നത് യാര്‍ ? ഒരു “A” താനെ ? യെപ്പടീ ?

അത് യെപ്പടിയെന്ററാല്‍ പീഡീയെഫിന് ഫോണ്ട് എംബെഡ്ഡിങ്ങ് എന്ന് ഒരു പരിപാടി ഉണ്ട്. അതായത് നമ്മള്‍ പീഡീയെഫ് ഉണ്ടാക്കാന്‍ ഉപയോഗിച്ച ഫോണ്ടുകളിലെ ഗ്ളിഫുകള്‍ പീഡീയെഫ് ഫയലില്‍ തന്നെ സൂക്ഷിക്കുന്ന സൂത്രം. അത് കൊണ്ടാണ് രൂപാ ചിഹ്നം നമുക്ക് പീഡീയെഫ് റീഡറില്‍ കാണാന്‍ കഴിഞ്ഞത്. പക്ഷെ അത് ഉണ്ടാക്കിയത് വേറെ ഏതോ ഫോണ്ട് ഫയലില്‍ “A” എന്ന ഗ്ളിഫിന് പകരം രൂപാ ചിഹ്നം പ്രതിഷ്ഠിച്ചത് കൊണ്ടാണ്. എന്നിട്ട് രൂപാ ചിഹ്നം വരേണ്ടിടത്ത് ആ ഫോണ്ടിലെ “A”എന്ന അക്ഷരം ടൈപ്പ് ചെയ്തു. സംഗതി ക്ളീനല്ലെ ? ഹും. ആ ഡൊക്യുമെന്റില്‍ രൂപാ ചിഹ്നത്തിന് വേണ്ടി സെര്‍ച്ച് ചെയ്യാന്‍ കഴിയില്ല. കാരണം ആ ഫയലില്‍ രൂപാ ചിഹ്നം ഇല്ല.

ഉദാ.2

അടുത്ത കേസ് – നമ്മുടെ മാതൃഭൂമി പത്രം തന്നെ. സംഭവം യൂണിക്കോഡ് ഒക്കെ തന്നെ പക്ഷെ ഇവിടെ ഒന്ന് പോയി നോക്കിയാട്ടെ.

ആഹാ വീണ്ടും രൂപാ ചിഹ്നം. ഇതെങ്ങിനെ ? ഓക്കെ. ആ സാധനം കോപ്പി പേസ്റ്റ് ചെയ്താലോ ?
"- 7200 കോടിയാണ്"

ഏ ! രൂപാ ചിഹ്നം എവിഡെഡെ ? ഒരു “-” ചിഹ്നം മാത്രം. ഇവിടത്തെ കളി വേറെ. മാതൃഭൂമി സൈറ്റില്‍ ഫോണ്ട് എംബെഡ്ഡിങ്ങ് ഉണ്ട്. അതായത് മാതൃഭൂമിയുടെ സൈറ്റില്‍ നിന്നും കണ്ടെന്റിനൊപ്പം അത് കാണിക്കാനുള്ള ഫോണ്ടും ബ്രൗസറിന് കൊടുക്കുന്ന ഒരു ഏര്‍പ്പാട്. “ഫുള്ളീ ആട്ടൊമാറ്റിക്” അതായത് ഫോണ്ട് ബ്രൗസര്‍ തന്നെ വലിച്ച് കൊണ്ട് വന്നോളും. നുമ്മ ഒന്നും ചെയ്യണ്ട !! അപ്പൊ അങ്ങനെ വലിച്ചോണ്ട് വന്ന ഫോണ്ടില്‍ … ആ ! നേരത്തത്തെ പോലെ “-” ന് പകരം രൂവാ ചിരിക്കും.

കുഴപ്പങ്ങള്‍

ഈ പന്ന പരിപാടി കാരണം ഇന്റര്‍നെറ്റില്‍ ഈ രീതിയില്‍ കേറുന്ന കണ്ടന്റെല്ലാം പിശകുള്ളതാകും. ആരേലും രൂവാ ചിഹ്നം ഉപയോഗിച്ച് തിരഞ്ഞാല്‍ ഇജ്ജാതി സാധനങ്ങളിലൊന്നും അത് കാണില്ല. ഇത് പണ്ട് യൂറോ ചിഹ്നം ഇറക്കിയപ്പോഴും സംഭവിച്ചതാ. പക്ഷെ നമ്മള്‍ ചരിത്രത്തില്‍ നിന്ന് പഠിക്കുന്നത് മോശമല്ലേ ടെക്കികളേ ? ചെയ്യാനറിയില്ലെങ്കില്‍ അത് ആരോടേലും ചോദിക്ക് . ഇല്ലെങ്കില്‍ ചെയ്യുന്നത് ശരി ആണോ എന്ന് അറിയാവുന്നവരോട് ചോദിക്ക് . ഏ ഹെ ! നമ്മള്‍ ശിങ്കങ്ങളല്ലേ ? അറിയില്ല എന്ന് പറഞ്ഞാല്‍ നിക്കര്‍ ഊരി പോവും. അതോണ്ട്  സ്റ്റാന്‍ഡേര്‍ഡുകള്‍ തുലയട്ടെ – അതൊക്കെ വെറുതെ സായിപ്പ് പറയുന്നതല്ലെ ?

ഇന്നി രൂവാ എങ്ങനാ ടൈപ്പ് ചെയ്യുന്നത് ?

സ്വനലേഖ ഇന്‍പുട്ട് ഉപയോഗിക്കുന്നവര്‍ക്ക് രൂപാ ചിഹ്നം ഉള്ള ഒരു ഫോണ്ട് സിസ്റ്റത്തില്‍ ( ഫെഡോറ / ഉബുന്തു / ഒട്ടുമിക്ക പുതിയ ലിനക്സ് വിതരണങ്ങളും ) ഉണ്ടേല്‍ Ru3, Roo3, Ruu3, ru3, roo3 ഇതെല്ലാം രൂപാ ചിഹ്നം ടൈപ്പ് ചെയ്യാന്‍ പറ്റുന്ന കീ കോമ്പിനേഷനുകള്‍ ആണ്.

വിന്‍ഡോസില്‍ ആണേല്‍ ഇത് വായിച്ചോ – http://support.microsoft.com/kb/2496898

വൃത്തികെട്ട ടെക് റിപ്പോര്‍ട്ടിങ്ങ്

ഓ ഇന്നി ഇതിനൊക്കെ പുറമേ ദേ വൃത്തികെട്ട ടെക് റിപ്പോര്‍ട്ടിങ്ങിന്റെ സാമ്പിളുകള്‍ :

http://www.thehindu.com/business/article2230577.ece ( The Hindu ) – The faulty reporting here is with respect to the fact that Unicode consortium and ISO are standardization bodies who do not develop software, but rather develop standards. They are different things. As I understand, TDIL developed the software ( which I couldn’t find in that site anyways ) according to standards developed by Unicode/ISO


http://news.keralakaumudi.com/news.php?nid=858a6c30614553af94032a59f4b3af59
( കേരളകൗമുദി )

ആഹ് ഹാ ! ഇത്  ആ ഹിന്ദു റിപ്പോര്‍ട്ടിന്റെ തര്‍ജ്ജിമ പോലെ ഇരിക്കുന്നു. പക്ഷെ ഹിന്ദു വിലെ റിപ്പോര്‍ട്ടിലെ പിശക് മാത്രമായാല്‍ ഒരു രസമില്ല. അതോണ്ട് കേരളകൗമുദി സ്വന്തമായി ഒരു സാധനം ഇട്ടു. അതായത് “വിന്‍ഡോസ് വിസ്ത”, “വിന്‍ഡോസ് സെര്‍വര്‍ 2008″, “വിന്‍ഡോസ് 7″, “വിന്‍ഡോസ് സെര്‍വര്‍ 2008 R2″ ഇതൊക്കെ മൈക്രോസോഫ്റ്റ് ഇറക്കിയ സെര്‍ച്ച് എഞ്ചിനുകളാണെന്ന്.  ദിവസോം ഗൂഗിളും വിന്‍ഡോസും ഉപയോഗിക്കുന്നവരാണെന്നോര്‍ക്കണം.

വിവരമില്ലേല്‍ ചോദിച്ച് മനസ്സിലാക്കാനുള്ള മനസ്ഥിതി ഇല്ലാത്ത തലക്കനം പിടിച്ച റിപ്പോര്‍ട്ടര്‍ മാരെയാ ഞാന്‍ കൂടുതല്‍ കണ്ടിട്ടുള്ളത്. അല്ലാത്ത കുറച്ച് പേരുണ്ട്. പക്ഷെ സത്യം പറയുന്നവനിവിടെ വിലയില്ലല്ലോ. വല്ല പെണ്ണിനേം പീഡിപ്പിച്ചു എന്ന് ഇന്നി എല്ലാ ടെക് പ്രസ്സ് റിലീസുകളിലും എഴുതി വിടാം. അപ്പോ ചെലപ്പോ കൂടുതല്‍ ചോദിക്കുമാരിക്കും.

Android apps – MPD Client for Android

July 10th, 2011

I am a big fan of the “Music Playing Daemon”.  Its small, uses way less resources than  equivalents, say Amarok, and is very fast. Since its a daemon, CLI and GUI clients can be used to connect to it, but I prefere a CLI app called NCMPC. A desktop user’s review can be found here. Setting up MPD  is quiet easy and is extensively described in the Arch Linux wiki entry. The configuration part of the article should be the same for any other GNU/Linux distro.

I often put on a playlist and lie down while I am reading – when the mind is not very taxed.  Anyways, I am quiet lazy when in such a mood and I have to get up if I need to skip the song/add new song etc. I used to make do with XBMC and its awesome remote application.

Today I found this nice app called “MPDroid” in the android market and myan, its the perfect little companio to mpd. It solved my woes.

Pros : Replicates NCMPC. Most of it. It works vrey well if you have a pretty decently organized or tagged library. Pulls in album art too.

Cons: Search is slightly limited. It doesn’t have options for search by filenames, though it allows search by artist and album.

VerdictMust install if you use MPD to manage music.

I will let the screenshots speak now.

 

Arch Linux – the distro that teaches you to fish

May 12th, 2011

I installed Arch Linux for the first time on January 5th, 2009.  From that time till now, apart from a very brief stint with Debian for a few weeks, Arch has been my primary operating system.

I have re-installed it only once – after i wiped Debian. The rolling release system has kept my system up-to-date through these two years. yaourt and these days, clyde, help me with additional software I need from AUR.

The system so far hasn’t broken,  or has never let me down when I really needed it. I was using KDE4 till 2011 January at least, and shortly after switched to using openbox + xcompmgr as a desktop, with a disconnected set of utilities including pcmanfm, Firefox 4, gnome-terminal, picasa, mplayer, feh, leafpad and emacs.

Why I’d recommend Arch Linux for a student/technically minded user :

  1. The system makes you learn about a GNU/Linux distribution and how it operates.
  2. The documentation is great – its the best I have seen so far, and beats even the mighty Ubuntu wiki.
  3. Its simple to install and once configured, can be left alone. Updating can be delegated to a cron job.
  4. Customizing a package is easy via ABS.
  5. Maintaining a package via AUR is easy because of the great packaging tools.
  6. The tools are simple and get out of your way to help you get things done – no dialogs asking you to click next and provides clear and concise messages as to whats going on.
  7. Package maintainers, IRC channel, forums and mailing lists are all friendly. Not in the spoon feeding way, but in the teaching you to fish way.
  8. If there is broadband, then you can safely setup the system for anyone and run an automated update every month or so. It will simply *work*.
  9. Features a simpler BSD style init that’s far easier to understand and maintain
  10. Killer feature : New packages arrive fast – very fast.  Arch users usually get the latest version of their popular desktops a few hours after the release announcement. This is one of the reasons why Arch is one of the best OS’s to have KDE4 running on – bug fix releases arrive fast.

Why I won’t recommend Arch Linux to everyone :

  1. No GUI installer.
  2. Default installer doesn’t install a graphical desktop.
  3. Requires reading documentation ( quality documentation, lot of it).
  4. Some packages may not be available at all – you’d have to roll your own :)
  5. Requires fiddling with configuration files
  6. Requires broadband – this is a must if you want an up to date system.
  7. There are no particular “versions”. If people run into issues, they cannot simply say that they are running a particular version of Arch when reporting an issue.

I haven’t stuck this long with a distribution except for Slackware. ( I like Arch because this is what Slackware should be, IMHO).

If you haven’t tried it yet, you can either start off with Chakra, which is a distro based off Arch that comes with KDE or you can simply install Arch.  Read the “The Beginner’s guide” which will walk you through the installation – it is well maintained and covers everything. It teaches you to fish.

The Silpa Dictionary client for Android

March 19th, 2011

The News

Rajiv wrote an Android 2.2 client for looking up meaning of words using Silpa dictionary service. It currently supports only the English-Malayalam and English-Hindi dictionaries though, but works well enough for daily usage.

Yes – you can read the meanings in Malayalam even though Android 2.2 doesn’t support Malayalam rendering.

Screenies:

 

Silpa Dictionary Client - Dictionaries

Install

An APK is available here. Install it by browsing this site through your phone and clicking on the link or by downloading the APK into your phone’s storage and opening it from the phone.

How it works

It uses SILPA project’s dictionary service to retrieve meanings as rendered images. Internally, the dictionary module makes use of the Script rendering module (which is still under development) to generate an image of the word’s meaning.

Hack

The code for the android client is available in Rajiv’s Github.  Knowledge of Java and standard Android development setup is enough. Official SILPA code repo is available here. You need to know python and install assorted libraries as well. Do go through SILPA setup instructions.

Credits

Android client written by Rajiv R Nair, long time SMC member, co-author of  Freedom Toaster software, fellow FOSS enthusiast and a very good friend.

Vasudev Kamath , contributor and maintainer of  SILPA project, for advice and help in committing and pushing code to Silpa server.

Santhosh Thottingal , founder of SILPA project and long time SMC contributor, for constant  support and advice.

Anish A- SMC member, FOSS lover,  fixed a showstopper bug in the SILPA dictionary module

Me – I wrote a few lines of code to hook together the existing modules on server side to make Rajiv’s job easier. So I can now claim that I have contributed to SILPA project :D

SILPA project’s new features

For those interested in actual details of the changes in SILPA, what I did was

  1. Add a small function that calls the script rendering module with the word’s meaning – this returns an image URL
  2. Modify the SILPA dictionary module to support a GET , that will invoke the above function and set the image URL as the content, with an HTTP redirect header. Thus anyone trying to do a GET with the following parameters will be redirected to the image.

Generically, a GET of the dictionary module’s URL with the following request variables are supported

Required ( Omitting any of these results in a server error )

  • image : if set to “y”, a renderd image(png) of the word is retrieved. Else meaning in Unicode text will be retrieved.
  • text: word whose meaning is to be looked up
  • dict: the string that denotes the dictionary to be used. ( refer the Silpa Dictionary module for list of values)

Optional ( Supported only when image is set to “y”, needs more testing)

  • imagewidth ( defaults to 300 )
  • imageheight ( defaults to 200 )
  • fontsize ( defaults to 12 )

eg: http://silpa.org.in/Dictionary?image=y&text=freedom&dict=en-ml&imagewidth=500&imageheight=500&fontsize=16

How it all came to be

The week before this one was particularly hectic at work, and me and Rajiv were pulling off long days. I hadn’t logged into GTalk for ages and I decided to log in so I could let my head cool. I somehow starts talking to Santhosh, and when I leave, continue to chat on my Android – of course it doesn’t display Malayalam. That somehow must have gotten my mind into some alternate track because last Sunday morning, at around 2.a.m, I asked Rajiv to write an Android client, that will make use of the Silpa service. We immediately set to work, me exploring the Silpa API and Rajiv cursing the Eclipse IDE when he tried out Android development.

By late Sunday night, we had a working version that run on the emulator, that makes use of SILPA’s JSON API. This version would first make a call to the dictionary service and retrieve the meaning, then use that meaning to invoke the render service. The render service’s JSON API will return the URL to the generated string. This was only a proof of concept, so to speak.

We talked to Santhosh about it, discovered a bug in dictionary module (that Aneesh fixed ) and finally I ended up making changes to Silpa code to reduce calls to the server. The rest, on my part, was messing around with github, gitorious and talking to Vasudev about code changes and getting him to push changes on the server. Vasudev, being a good sport, tolerated my pestering and was a great help in getting the changes across to the official SILPA repo and server instance.

Rajiv relentlessly slogged to re-write the app in a non blocking, threaded manner, and polished the UI.

Today we have the app almost ready, and as I am writing this, Rajiv is adding the credits screen to the app, and will be uploading the changes to his github repo soon.

Everyone! download, test and report bugs to Silpa mailing list

Arch FTW !

August 24th, 2010

So finally Google got their act together and released a googletalk plugin for GNU/Linux systems – they released it for Ubuntu. A sensible option since a large number of desktop GNU/Linux users use Ubuntu. They might make an RPM available. So what about the Arch people ?

Aah. Thats the point :) cpcgm goes ahead and creates a PKGBUILD and puts it on AUR. You can look at it here and install it (if you have yaourt ) using

 yaourt -S google-talkplugin

This – the self dependence and readiness to understand and fix the systems – is why Arch has the best documentation around , and at the same time a small,close community. I love being a part of it :D

A brief encounter with HTML 5

August 11th, 2010
This is not a how to. This is not meant to help you through anything. This is just me writing down stuff

One fine evening, I got fed up with what I was fdoing at office and decided to read about something. As it turned out, HTML5 was mentioned on HackerNews that day. So I thought “what the hell, I should look at this.”. I googled around, and ended up at the beautifully written Dive Into HTML 5 website. SO I am reading, its very interesting and all. Suddenly I get this email from my colleague asking me to “do something about that defect”. And I alt-tab to ToDo.txt and add my one liner there. Now since this is my blog and I am going to say what I like, I am going to talk about my ToDo.txt a bit.

The ToDo.txt has lived on all my work PCs’ desktops. The way I get work done at office is, whenever I am assigned a task (or figure out one for myself) I add a one liner to the ToDo.txt, along with the deadline datetime if specified. My ultimate goal is to have an empty list so I can go back to reading stuff on internet. Well this ToDo.txt remains open in a text editor from the time I boot my PC to the time I shut it down at the end of the day. Its no big deal. Over the years, it has morphed from a numbered list to simply a list of things. I found out that numbers on the list somehow make me want to organize it more and then make it complex. So now everytime I have a task, I add it to the list. When I am done with it, I comment it out using a #, python style ;) . I thought I would write a python script that will print out my current and past items accodring to the commandline arguments I give it – never got around to doing it. Ooo digression digression !!

So when I read about HTML5′s offline storage, I thought I would try and do something to replace the todo. I have found that writing a program just for the sake of it is different from writing one with a proper goal. Its like “I am going to write a hello world” and “shit I need this to do some stuff for me”. So I read about offline storage in HTML5, and put together a rather sloppy Todolist.html. I also lifted teh CSS for the ToDo from Dive into html 5.

Things I learned: I know jack about Javascript and DOM now – so I headed over to w3schools and read some javascript and DOM stuff. HTML5 is sane- it was made by people who thought that things should get as simple as possible.

Now for some random things I need to write down because I claimed to have read about HTML5. HTML5 offline storage at its simplest is a hashmap that persists between sessions – its called ‘localStorage’.

localStorage["hello"]="world"; // "hello" is the key and "world" is the value.
/*
 * pops up an alert window that says "world"
 */
alert(localStorage["hello"]);
localStorage.length //gives you the number of items in it.
localStorage.clear(); // Clears the localStorage.
localStorage.key(i); // retrieves the i'th value stored.

Now mind you, this hashmap can store only strings. If you want to store numbers you have to store them as strings and then do a parseInt when you retrieve them.

Well now I have a ToDoList.html instead of a Todo.txt, and it lives inside the browser. I close my browser window when I shutdown the PC and when I start the browser next day, its still there.

HTML5 is not just some additions to HTML standard or “fancy” stuff like localStorage. It is about HTML, CSS, javascript and there is a lot of it to learn. It _is_ worthwhile reading through it and adopting it whenever you can. Most browsers support it already – even on mobile phones. If you look at the Todolist.html source, you can see some HTML5 tags in it :) . Its strongly recommended even if you are not a web developer. Refer:

Much ranting about some bull crap.

August 3rd, 2010

Warning:  This is a rant post, triggered by an email forward. That should pretty much say “skip it”. If you read this, you are welcome to comment on it, but you should realize that this post is here because I wanted to push it off my mind.

I got this email that Narayan Murthy supposedly sent to all Infosys people. This is something that has been going around as a forward for quiet a while. I really do not know if he sent it, but I am slightly pissed off – at getting this forwarded for the Nth time as well as for making it look like people are taking advantage of the company facilities.

The email is here.

It sort of angered me when I read it.

I do not believe that Narayana Moorthy wrote it.The picture it projects is far from truth. And I don’t think he is a liar.

Nobody works straight 8 hours in an office. Not with all the useless chatter, meetings etc. And even without all the interruptions, working 8 hours straight off actually requires that someone stay in the office for at least 9 and a half to 10 hours. Why ? Its because programming is _usually_  an intellectual activity. If you are a programmer or an architect, you solve problems. You get tired even though you are sitting still in your seat and you _need_ breaks. Of course, all this is assuming that the task assigned to the programmer is properly estimated. Let me explain.

Estimating programming time is still a black art – You get it right sometimes – but usually its underestimation. Its like Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law. The primary reason is, when you estimate time, the guy doing it doesn’t have a clue about how long solving the programming problem itself is going to take. Its because the enterprise manager/team lead type are not usually educated enough to realize that some problems might actually be unsolvable. They break down the problem into smaller bit and assume that things can be implemented easily. There are two things at work here – Specifications that are as slippery as eels and the actual lack of knowledge of whoever is assigning the task. Smart designers and architects realize this. They usually try to mitigate and solve the problem in the design phase and _then_ estimate time for expressing it as a program. Their estimates tend to be correct. But who gives a shit !

The particular fact, that the time for implementing a solution to a problem cannot be estimated really well unless you already know the solution, is always overlooked and never given priority when a big company like say, Infosys solicits and builds software solutions for a large client. It is always about delivering fast. In tight deadlines. Since its easier to break promises and apologize later, the programmers are usually put under pressure by the managers/whoever is involved. They first promise the client that things will be fixed in an incredibly short time line, and tell the programmer to do it. The poor guy tries to fix, and fails usually, and by that time the manager plays the situation a bit, pacifies the client and buys the programmer more time. The programmer is happy that he got more time to fix, the manager and the client are happy that situation is fixed (in spite of the delay).

This is how things happen usually. The case stated in that mail, that of the programmers staying back in office to enjoy net and food, its absolute crap. A few might do it. But the majority doesn’t – they are there because of bad estimation and false promises made to the client. They want to get out of office fast. So they finish up stuff and just fucking leave. Of course there are people who use the company resources to download things, they do happen. But that case is rare, and the company usually has a firewall and proxy in place to prevent such things. A big enterprise like Infy has a locked down access – so much so that sometimes looking for legitimate solutions in a webstie will lead to “policy violations” because the site is incorrectly classified as entertainment/personal storage/porn (wtf?)

Programmers do spend a lot of time on the internet reading up on stuff. They read Slashdot/DrDobbs/Arstechnica/HackerNews/YourFavoriteTechSite. And they do check their personal emails. But those usually happen when the poor guys take a break from the work. The company should let them read up on those stuff because a) This is sort of a stress buster/relief for the programmer b) Programmers read these to improve themselves and keep themselves abreast of new developments in their interest areas. If the programmer improves, wo is going to benefit ? Its a disproportionately small price to pay.
I think that email was cooked up by some sad HR people and is still maintained in circulation by the non IT crowd who think that the programming crowd has it better. The real programmers shake their head sadly at the email and go back to their code editors.

On the other hand, these sadass companies insist on silly shit like “dress code”, “signing in on time”, “putting in 8 hours”, “responsible usage of internet”. What a load of bull crap !! Programmers program – they are supposed to be dressed for comfort so that they can sit and code. They will finish a task on time, just dont insist on working the normal hours – some are nightowls, some are early-birds. Its not some mindless repetitive task – it actually requires them to think. Let them choose their hours. And these sadasses who make a ruckus about working 8 hours never bat an eyelid when the guys sit and pull of things in an incredibly tight deadline.

People who think that that email is absolutely spot on about something, you guys must be the non it professionals. That email is a fucking joke. Please do not waste your time forwarding it.