Wednesday, September 03, 2008

Google has released a new browser called Google Chrome. I had heard of this project a while back when I was working at Google and I have been hoping ever since that they release it so that I can finally get off Internet Explorer.

So Chrome is fast, feels light weight and uncluttered. After playing around with it a bit I have replaced IE as my default browser (finally). This is just their Beta 1 release but it feels so good.

logo_sm

There are a few things that I would like it to have such as integration with the fingerprint authentication service so that the logons I created previously work with Chrome as well.

You should try it out:
http://www.google.com/chrome/

There is a fun comic here about chrome:
http://www.google.com/googlebooks/chrome/

And many YouTube videos:
http://www.youtube.com/watch?v=JGmO7Oximw8
"Browsers need to get better because they were designed for an era when web pages were doing completely different things..". I agree.

 

I have heard from places that Chrome does not work well with Silverlight. Personally I don't care too much because I don't use Silverlight myself. I have never been convinced enough to install Silverlight because I felt that it would make an already slow and frustrating browsing experience degenerate a bit more. Which is interesting because now that Chrome is so fast i probably don't mind the penalty of Silverlight slowing it down a bit. So if some folk at MS write a good Silverlight plugin for Chrome arrogant little uns like me might try it out.

 

On Privacy

You should also read the privacy policy (if you care about such things). No, no one is stealing your passwords, but someone can be watching your "behavior":
http://www.google.com/chrome/intl/en/privacy.html

I for one have disabled the auto-suggestions feature as explained here: http://www.google.com/support/chrome/bin/answer.py?answer=95656&hl=en

Its a nice feature, but when I think through the implications, I'd rather not have it. Your mileage might vary.

 

Now can someone write a fast, lightweight and feature rich Email and Calendar app so that I can get rid of Outlook?

Wednesday, September 03, 2008 10:50:24 AM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  | 
 Tuesday, February 19, 2008

I am not a professional photographer. I am pursuing my PhD in theoretical Computer Science and I enjoy photography. Nearly all I what I have to say about photography comes with my experience with my EOS 350d that I have had for about 2 years, at the time of this writing. Hence take my opinions and suggestions with some discretion.

The art of "painting with light" has many ingredients. There are matters of spirit that each person brings - your aesthetics, your sense of beauty, your evaluation of what is worth shooting, etc. And then there are aspects of photography that involve understanding the nature of the machine and laws that govern it. To the latter part, I realized only recently, that I can apply my relatively abundant geekiness, potentially compensating part of my shortcomings in aesthetics. Hence my blog entries about photography.

Of course, some have more skill.

Tuesday, February 19, 2008 8:59:19 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Thursday, November 29, 2007

I am truly flooded with work these days and things have been getting annoying. I was searching the web for something when I came across this. It considerably cheered me up.

Conway's Law: Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure.
Or, colloquially: Software is doomed to reflect structure of the organization that produces it.

I cam across this in Michael Feather's blog. That is an enjoyable entry, worth a read

Its a bit shocking that this is indeed true. Having worked on a certain large OS project once, I know this to be true about that system with surprising accuracy. So there is a good and bad side to this. The good is that some part of the org maybe actually functioning very well. The bad is that it may not be.

I recently switched to Vista and things were good for a while until some driver issues started showing up in the past few days. I haven't got a chance to chase it to its death, so I am having to proverbially 'live with it'. The strangest of the issues is this one:

I have been using a simple Logitech USB keyboard with my laptop for several weeks now. Its a normal usb keyboard - no fancy media buttons or anything. Its just plug and play keyboard. It worked fine for a while until, the other day, Vista asked me for a driver! The keyboard didn't come with one - it never needed one on XP. Also it didn't need one on Vista as well until that day. So Vista gives me a bunch of options for finding and installing the driver automagically and such. These cause Vista to search the windows database online and then do some other web search and such. Several minutes of waiting later it gives up and says it cant  find a driver. The keyboard didn't come with a CD and the Logitech website doesn't have a Vista driver for it. After that my keyboard stops working!

This is really stupid because my bios can detect the keyboard. The keyboard works fine till Vista logs on and prompts me for a driver! After some grief with this I learnt that it I simply close the window that prompts me for a driver, everything continues to work just fine. I can use the keyboard with Vista as long as I just ignore its lack of a driver.

I remember remarking to myself "How did they not notice how the keyboard worked before? This reminds of working at MS...".

Thursday, November 29, 2007 10:02:01 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Sunday, November 11, 2007

Yesterday I went out to the the Union and bought myself a copy of Windows Vista Ultimate. My laptop is a Dell Inspiron, has a 1.7GHz Intel processor, 1 Gb or Ram and several external hard disks. The student license costs me ~20$, roughly the cost of two dinners. Vista roughly rates performance as 3.6 for my machine - the bottleneck being my processor speed.

I had heard several conflicting opinions about the OS, most being negative. I finally decided to try it to find out. I must say that in the past day or so my experience has been mostly pleasant. As a matter of fact the OS is yet to do anything to upset me very much.

Yes it is slightly slower than XP on my machine (my previous 2 year old XP setup had degenerated to crawl, so in cases it is actually faster than XP). Despite being slower it is not too frustrating as they have taken care of a vast number of small details, that makes the system more pleasant to use.  The weather gadget for example means that I don't have to use that piece of bloat from weather.com. Outlook actually seems to start a little more promptly on this OS.

Things like the fact that the OS asks about privilege escalations is rather nice. Even other things, like the fact that they did something as goofy sounding as brining your systems performance down to a single number makes a it rather handy. Most of the time people ask things like, "I have this hardware and this setup... will the following software run on it", now there is some heuristic with which you can come to an answer without relying on your local bullshit-expert. This is all entertaining and daresay, even useful.

I like the Aero look. I like the Win+Tab combination. I like the fact that they don't run the indexer all the time and bog down the system like they do on XP. I like how access control and such is better integrated into the UI. A better file copy interface finally. It also seems like there are some scheduler hacks to better prioritize interactive and foreground processes. Altogether a nice package.

Kudos Microsoft! I was truly skeptical and I had my XP installer handy. Now lets see how all this hold out for a few months.

Sunday, November 11, 2007 7:10:40 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 
 Monday, November 05, 2007

Sometimes you've got to scratch an itch. So here goes:

X-Zylo
http://www.xzylo.com/
http://www.youtube.com/watch?v=-GavWPxAAlY

GyroBall: A Japenese Baseball Pitching technique
http://en.wikipedia.org/wiki/Gyroball

Dyna Flex Gyro Ball Gyroscope
http://www.youtube.com/watch?v=nC5AjM2NI_c

Stirling Engine
http://www.gyroscope.com/catalog.asp?catalog=1014
http://www.youtube.com/watch?v=vM0YmlRIYBI

Gyroscope
http://www.youtube.com/watch?v=9WbbfzMH2to

The Controversy generating Royal Institute talk by Eric Laithwaite
http://www.gyroscopes.org/1974lecture.asp
(Its a bit funny actually)

XStream: Internal Wing Aircraft
http://www.rexresearch.com/carrcoan/carrcoan.htm

Winshurst Machine (Voltage Generator)
http://www.physlink.com/estore/cart/WimshurstMachine.cfm

Maxwell Wheel
http://www.physlink.com/estore/cart/MaxwellsWheel.cfm

Levitron
http://www.youtube.com/watch?v=iv8msBamA3M

Radiometer (Light Mill)
http://www.youtube.com/watch?v=6Zd70sOcYOQ

 

Got more?

Monday, November 05, 2007 11:35:42 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, October 10, 2007

Did I ever mention that I have always been a die hard Star Trek fan? I havent watched any of the Star Trek series as much as the Next Generation, so my admiration of Star Trek is largely limited to the Next Generation. I got up today morning and with some ado I decided to look at the notes for a test I have about Computational Complexity. I hate exams where I actually have to look at the notes for any non-trivial reason. Even worse, I hate subjects that make me need to look at the notes when I really shouldn't have to, had my love for the subject been left undistrubed. Irritating.

This reminded me of the "human equation" from one of my favourite Star Trek episodes, "Hide and Q":

Data: "Sir, how is it that Q can handle time and space so well, and us so badly?"
Picard: "Perhaps one day we will discover that space and time are simpler than the human equation."

Googling for this, I came across Q saying: "Your species is always suffering and dying".

This considerably cheered me up. Ok, back to the notes. (Later addition: if you want to read a nice spoiler about the episode go here. Please read it only for memory sakes, dont read it if you havent watched it already. Ok, now back to my notes).

Wednesday, October 10, 2007 8:46:02 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Saturday, September 15, 2007

Srikanth Chunduri visited me this weekend. The last time we met was in Hyd 3 years back. These days  Srikanth is up to living the life of a fast paced New Yorker in the financial district. He introduced me to some music from XLRI... enjoy.

 

If you don't understand Hindi, I would advice that you don't go about singing this without having checked the meaning of the lyrics with a friend. Enough said.

Here is another piece, which I would rather not embed on my blog:

http://www.youtube.com/watch?v=y_KT3sMR4CY

Enjoy.

Saturday, September 15, 2007 2:38:43 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 
 Sunday, November 19, 2006

I have been getting my brain fried the past few days trying to relate call-by-need and delimited continuations. Staring vacantly into space I noticed my little flying certificate from Cornwall. Happy memories, hence the post –

 

 

 

Granite cliffs around Land’s End, Cornwall taken from a Cessna 172 that I was flying.

(Yes it’s safe to let go of the controls of a small plane like that for a short while)

 

 

On foot this time.

 

Sunday, November 19, 2006 1:40:22 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, August 30, 2006

Since many of my blog entries have ceased being blog entries and have become more beacons of the fact that I am trudging through life, here is another life update.

 

I am back in Bloomington, Indiana after a great summer. After many years have I had a summer that left me with so many memories. I spent the summer in Cambridge, UK and like I was telling one of my friends here at IU (Indiana University) that Cambridge is like a distillation of the essence of several Bloomingtons put together, and then matured over several hundred years – a little like comparing a fine Scottish whisky to beer – maybe a 16year old Glenmorangie in burgundy wood to a Guinness.

 

I made it a point to travel as much as I could this summer – as much as time and finances would allow. And it was great. I look at some slight embarrassment at the rant about Cornwall below. But yes I had a great time at Cornwall. Cornwall aside, took several trips to London, went to Norfolk – Hunstanton, Cromer, Great Yarmouth. London’s a pretty amazing city and I haven’t been to most of the major touristy spots. Spent some time gallivanting around Cambridge – went to Peterborough and Ely – saw the famous cathedrals. Went to Granchester – the little village near Cambridge.

 

However most of the really great travel came towards the end of summer. I had a chance to finally go to Scotland. The trip to Scotland was primarily motivated by a long standing wish to go see Skye – the island of Skye – like in the famous Robert Stevenson poem “over the sea to Skye”. Scotland was amazing in many ways – firstly it was beautiful. But that aspect of it didn’t impress me much initially – in my mind I kept comparing it to the highranges in Kerala and not seeing much more there. But after a while you realize how much grander Scotland is – the deep lochs and the high lands and the people. I got a chance to spend two night at the bank of the Lochness in a little town called Fort Augustus. At Fort Augustus I picked up a liking for good single malt whisky. I never had a liking for hard liquor before – but this is great. Favourites? Hmm… I like a Glenmorangie (esp in Burgundy wood), The Macallan, Dalwhinnie; I like this really interesting whisky liquor called the Glayva…. Scotland was interesting in other ways too – here was a land that was under conflict with the English for many hundred years and they too, much like India tries to hold on fiercely to their traditions. Scotland of today is not much like that, but an Scotsman you meet will be only happy to make clear to you how they are not Englishmen. It was alsoa funny parallel that very often tartan patterns on kilts were like the checked patterns on mundu back in Kerala.

 

After Scotland the next major travel was to Paris and then to Rome. Paris was good, Rome was great. I think aside from a love for whisky another take away from summer is the need to be Italian and to speak Italian – I am so amazed by that language – I have taken an instinctive liking to it. It also partly has to do with a good Italian friend I made this summer (who also happens to be a logician in his free time). More on all that later. Honestly these days there is too much to write about, and so many things to say about every little thing – I need to sort out my time for blogging a little more carefully.

 

HairyCoo1.jpg

Hairy Coo!

Wednesday, August 30, 2006 1:07:18 AM (Eastern Standard Time, UTC-05:00)  #    Comments [6]  | 
 Monday, June 26, 2006
  Cornwall 

I think it had been baking inside me for a along long time now – this need to travel. The last time I really traveled was with Anand to Hampi, Gulbarga and Bidar many many years back. Of course since then I have traveled much, but nothing that had the sense of rawness that this weekend had.

 

This weekend I traveled to Cornwall. I grew up in Cochin which is a little costal town in Kerala, India. Cochin is a very beautiful place, but it is also, like many places that one grows up in a place that doesn’t let you realize how beautiful it really is until you have left it. Since leaving Cochin I have mainly been living very far away from the sea. So now that I was in England I looked around for the best piece of coastline I could find and decided to visit it. The best piece of coastline I heard of, as recommended to me by many people, was Cornwall. And so sometime mid last week I decided on a whim that I was going to Cornwall. Cornwall is the south eastern tip of England and is famous for its rocky , cliff lined coastlines.

 

The journey to Cornwall would be 12+ hours by bus from Cambridge because I pretty much had to travel all the way across the country. Not caring much for the strain of the journey, I decided that I would leave Friday night arrive on Saturday morning and leave Cornwall on Sunday night and arrive back at Cambridge on Monday morning by 9.00 and then show up for work. Needless to say, I did, though there were many points in the trip at which I felt I wouldn’t make it. And this being Monday evening, I haven’t had any sleep yet and my feet are killing me. But I loved it, every bit of it – even the hard hard parts.

 

If you have got your head messed up when you were really young and have read Bach and Pirsig and kept that sense of aching inside you – and then you watch a movie like the Motorcycle diaries and it stirs up everything – then at some point you just have to let it all go and travel and see if you really have it inside you to do so. I think this trip to Cornwall was a little sampler for me – to see if I have it in me – I think the answer is yes.

 

So this blog entry is a travelogue of sorts of this amazing weekend. Needless to say, I have many many pictures as my witness.

 

This was the plan – board the bus to Penzance, get off at St Erth and catch a local train to St Ives. Start walking to Pendeen from St Ives. That was supposedly 21km according to the guide book I had. I booked a little bed and breakfast at the Radjel Inn at Pendeen. The next day I would catch a bus to Land’s end and walk to Porthcurno. From there I would catch a bus to Penzance where I could cath my long distance bus back to Cambridge. That was the plan.

 

I arrived at St Ives by about 10.30. St Ives is beautiful – the sort of place I regret so much having to rush through. If I ever go back to Cornwall I hope to spend a day or teo just enjoying St Ives. It’s a little rocky coatal town with very scenic winding narrow roads and several beaches and lots and lots of seagulls.

 

 

Seagulls are interesting birds – if you have never had the chance to see lots of them up close before you are in for  treat. It was interesting seeing this one squaking at a sign that said “Don’t feed the seagulls”. Every now and then you would see a fat seagull with the personality of a duck wobbling up to you. I remember asking one of them if it had had any self respect and if it had heard of Jonathan and it left looking rather offended.

 

I sampled some of the traditional “Cornish Pasty”, got myself a sandwich and some bottled dribnk and I was off. Like the guide book (which is titled “Walking in Britain”, and I highly recommend it – expect I think the book is written by athletes of some sort) the walk was rather strenuous. 21km may not sound like much but winding up and down these cliffs by the sea it is really something else.

 

Every hour or so you would see another human being – but that aside all you see are miles of open grasslands and rugged cliffs and a beautiful blue green sea. If you break a leg or sprain your ankle you and pretty much finished unless someone comes by and finds you. I started out only by ~12.00 and sure enough I didn’t make the walk to Pendeen. After almost giving up several times along the way and once getting my feet caught in some bog I made it to Treen. I was out of food and water at it was about 6.45. I was sure I couldn’t manage any more. Treen was this little town which pretty much only had only one street and a dozen or less buildings. Most of the buildings were bed and breakfasts and there was one hotel! All in the is little place. And whats interesting is that the prices were very high! It seemed like it was popular place for people to give up.

 

There was this one person how I had crossed paths with several times during my walk who knew someone locally and managed to get a cab from somewhere. The town itself had no cabs or public transport. Hence I got a lift to Pendeen. I had a shower at the Radjel Inn (a nice place to stay if you are looking for a place to stay at Pendeen) and got myself some tradition Cornish mead and dinner from a local meadery. I slept like a log that night – esp considering the long days walk and the fact that I had got no sleep on the overnight bus.

 

The nest day morning, after a great breakfast I walked ~2miles to the lighthouse at Pendeen. At 9am its foggy and beautiful. There was a middle aged couple there peering intently out at the see – a little later the lady walsk up to me and ask me if I would like to see to a basking shark “Everyone should see a basking shark at some point in their lives” she said. And so I did.

 

I caught one two hourly bus that passes through Pendeen and got off at the Land’s end aerodrome. I heard (got a pamphlet at St Erth  railway station) that said that they sell rides for 29 pounds in a little Cessna. At the aerodrome they said that they need atleast two people for a ride or that I would have to pay for an additional child’s ticket for 15mins in the air. Seemed steep. Then it struck me that I could do something better – and I did – I got myself a  half hour training flight for 69 pounds. So I flew my first Cessna 172 (my first aircraft of any sort) on Sunday the 15th, June, 2006. It was brliiant – we flew all over Cornwall in those 30mins. I got to do most of the takeoff and landing by myself as well with instructions and occasional corrections by the trainer co pilot. I now have a little “Trial Flying Lesson” certificate on my desk that I am very proud off. My instructor was friendly guy named Ben who patiently answered my many questions about the aircraft. It was beautiful – you treat it well and the aircraft flies itself. It even has little landing light which are handy to scare the seagulls J

 

After my flight I caught the next bus to Lands end. Lands end is apparently the most scenic part of Cornwall – rightly so. However the guide book said that the walk from Lands end to Porthcurno is about 3.5 hours (and I remember I could do their walk the previous day). However it turned out that the last bus was two hours away and the bus driver told me that I could make the walk in less that two hours easily. Oh boy! I grueling one and half hours later I back away from the cliffs. This walk was scary – every now and then you are walking along a little much trail (like those in the middle of a paddy field – if you have ever walked through a paddy field you’ll know what I mean, with a steep rocky drop on one side). There were an occasional Jonathan and Fletcher to give me company.

 

After a while I could not keep up the pace and the focus and chickened out. As with all things in life, when you are doing something for an objective instead of the sake of doing it, your fears and difficulties multiply. I started to walk away for the cliff and cut across some fields and ran into some women who had a real map (yes, I didn’t have a real map – yes, I am slightly crazy). I seemed like I was less than half way there to Porthcurno and there was only 25mins to 5 when the last bus was. I hurried along and 15mins later reached a main road that said that Porthcurno is only 1.25 miles away. And I was pulling my last bit of energy together and started getting annoyed with myself for being so attached to the failures of reality and car came along and I had my ride to Porthcurno. A very friendly elderly lady who had been to India and said “At some level I know that some part of me is Indian” – I didn’t know what to say. She drove a little out of her way to drop me at Porthcurno.  I reached there few minutes before 5.00 in time for the bus and by now so thoroughly annoyed with myself for clinging so desperately to safety.

 

So I decided to do the only obvious thing, forget to bus and go sit on the beach. And I did just that and walked to the Porthcurno beach and say there till felt at home with my sense of struggly for having reached the place. And so a half and hour later when I headed back I noticed other troubled people trying to find a cab or some way to get out of there. I wasn’t overly bothered – would I miss my bus back from Penzance? Maybe. But then again maybe not – and sure enough there came the bus that I expected at 5.00 – a little bit of miscalculation and little bit of delay – but it was there just in time to pick me up when I had so conveniently finished with the beach.

 

Again I didn’t sleep to well on the over night bus back and I kept thinking of the ocean and cliffs and the wind. And I thought things I could say to myself when I had been weak at many times in my life and things that I could say to my friends when I had seen them weak. A trip like this is a very real experience, the beauty, the fatigue, the cost of a mistake, the realization if your own mortality are all very real things. This is the sort of trip that cut away many layers of flak that you accumulated on your thinking leaving you fresh and exposed and stronger.

 

Maybe I will do Cornwall again – maybe during this stay in the UK or maybe at some point later in life. Also now I have two places in the world that I would like to live the later years of life away from everything else – both may not happen, but its nice to know they are there – Bidar, Karnataka and Pendeen, Cornwall.

 

26th Monday June 2006.

 

 

Monday, June 26, 2006 2:57:19 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Monday, June 05, 2006

Idea Foundry

 

I was trying to explain to someone the other day about what I am doing in computers. I didn’t have a concrete way to explain previously but these days this seems to be a good way -

 

There are people who need to solve some problem and they use a piece of software to solve it for them. For example someone would wish to buy a flight ticket and they buy it through a website. They are usually called users or end-users. We are all end users. Then there are people who write the software they used to solve their problem. For example the people who wrote the website, all of the complex interactions between reserving your ticket and handling the monetary aspects are handled by these folk. They are the people who developed your software. I used to once do that, or something very similar. Then if you think about it, there is yet another layer - the people who wrote the tools using which the developers of the website wrote their website. These people write tools so that other write tools which you as end users use. The chain of people who write tools which are used to build other tools is a pretty long chain. Its like any services industry – one service is consumed by another service and so – providing several levels of users and tool providers.

 

Somewhere high up this chain in computers usage are the people who write the compilers and the languages and other infrastructural things which everyone else uses. This is very close to where I am today, except maybe one level of abstraction beyond that. I am in the business of studying and developing languages and programming paradigms. These are the ideas that are made manifest by the folk who create real languages and write interpreters and compilers for those languages.

 

The business of being in programming languages is a tricky one at best. It is one of trying to create fundamental ideas related to the way people think about writing software. Writing software, designing languages etc are a lot like real languages and cultures. They come with a lot of overhead and inertia and the sort of languages people use tend to affect the way they perceive and express ideas about the world around them. To create new paradigms and approaches for programming usually entails walking upto some very smart people and tell them that you can better the way they think about the world – “See, here is another way, you just have to rewire your brain a bit and it will make perfect sense… “. Tricky business.

 

If I were to add another line or two of abstraction to my work, I would land up in what is well considered to be mathematics. That is not to say that it is all not mathematical in nature already, but it is only slightly more so than the mathematics that can be expressed in any field of life. I remember one of my last days in Hyd at Microsoft, when I was in the process of leaving for university. It was at the canteen at lunchtime that I was having this conversation with friends and I was trying to tell them how I saw computer science as science and that the fact that there was something called software and the software industry only incidental to its true nature.

 

The problem with computer science is that it’s a very very early science, so much so that many people in it don’t think of it as a science. They think of it more as an engineering discipline. Some refer to it as an art. I am more of the opinion that it is a science – the very early stages of a fundamental science about the nature of the universe and the reality of things in it. Computer science is a science of automata, a science of the nature of interaction of simple interacting components and the study of their behavior. Like all good scientists if you asked me for evidence that this was indeed the case, I must shy back. I don’t really have concrete evidence, but instead I must point in the direction of rice’s theorem, the curry-howard isomorphism, church-turing hypothesis, the pi calculus and say that I feel very strongly that this is the start of fundamental things.

 

 

Luton

 

I had been to Luton this weekend to see Jims, my neighbor back at Cochin and an old friend. Luton had a carnival happening that day – good fun! Lots of floats and people dancing and such. If it hadn’t been for the soggy UK weather and the near perfect unpredictability of the rain, it would have been lots of fun indeed.

 

Since I have been saying this to a lot of people, I might as well write it down: I grew up reading lots of Enid Blyton (yes..). The thing about Famous Five and such is that you actually do believe that they had wonderful summers in the UK and there was always lots of great food around. Not so. The weather is terrible – I expected a summer and came to this country without a single warm jacket – and its been rainy wet and cold in a perfectly unpredictable way. Cycling with numb fingers and a frozen face isn’t what nice south Indian boys like me were designed for (hear! Hear!).

 

That aside, back to the topic of Luton. I had to write this entry because Luton was a place different from any I had seen in a while. It has a large Indian and Pakistani community and I was genuinely surprised to see streets with urdu and hindi shop names and streets that could have been some part of India. It was also nice to see women in salwar kameez’s – rather fashionable salwar kameez’s at that.

 

It was all very nice, until it started getting to me. It happened suddenly at a moment when I wasn’t watching – my mind let open a torrent of things which used to disturb me about back home which came screaming back. The mad screaming mediocrity of the place started blocking out everything in my head. Why are these people like this? Why? Suddenly I started seeing the look people’s eyes judging you continuously to see  if you are one of them or one of someone else. The road blocks caused by bad parking and lack of courtesy while driving.  The dirt on the street, the littler, the attitude that I don’t care and it doesn’t matter. The whole overwrought cultural pretentiousness – what was that old phrase “we are like this only”. Indeed. The completely lack of politeness, the constant suspicion at an existential level, the lack of the slightest bit of subtlety. When I was finally in my bus back, part of my head was screaming “No not all Indians are like that, look at me, I am different, I care”. But I don’t think it mattered.

 

I think our country and the people lack subtlety simply because they are constantly hounded by a constant deafening noise at an existential level such that they are almost deaf to everything else. The noise of being hammered by “you have to be like this” “even if you chose to change it is futile” “this is the system, live in its rules” “don’t think” – everyday, all you life – it eats away large parts of you faculties. These things were upsetting.

 


 

Posted late, as usual.

Monday, June 05, 2006 4:27:10 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Friday, August 05, 2005

Yay! Finally the search bots gave us a honorary indexing. :)
Hopefully most of the damage due to the url change will be undone soon.

Friday, August 05, 2005 12:37:12 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Sunday, July 24, 2005

As of 20 July 2004, I no longer work for Microsoft.

 

You are not going to be seeing any leaving Microsoft letters of the sort you may have seen from some ex-microsofties. I am going back to college. Over the years, I figured I don’t understand computer science very well. I figured I lack some fundamental things in my understanding of the way this science works. I love computer science and the only way I am going to be able to good enough to quit the field and probably go sell airplane rides for a living, is if I understand it better. So I am going to college.

 

I am joining Indiana University this fall for my Masters in Computer Science. I am navigating primarily by instinct right now, so I don’t have clear answers to ‘What next Rosh?’

 

I left Microsoft with very good opinions about the company. Easily the best company I worked for – for the quality of the work they do, for the quality of the people, for the culture and the spirit. I wish it was a much braver company with respect to taking risks, and boldly chasing after the next step in the everyday computing. I wish it leveraged its people better, I wish it was more about blood and genius and less about schedules and numbers. But it is easily better than most places that I have had the opportunity of knowing.

 

I am going to be thinking about a different class of problems for the next few years - problems about nature of computation, logic and mathematics.

 

The weekend I left Hyderabad I got to visit Golconda once more –

 golconda1.jpg

Golconda Fort, Hyderabad

 

I am now back at home, in beautiful Cochin –

 

Cruise boats at Marine drive, Cochin

Sunday, July 24, 2005 11:50:11 AM (Eastern Standard Time, UTC-05:00)  #    Comments [6]  | 
 Wednesday, July 13, 2005

After several months, and several ISPs, TMS is back up and stable. Which means that our blogs are live again.
Thanks Pandu

:)

Wednesday, July 13, 2005 1:03:15 AM (Eastern Standard Time, UTC-05:00)  #    Comments [9]  | 
 Monday, January 17, 2005

I recently had some C# code that that had to be made localizable. Most articles about localization/internationalization that you find on the web would talk about how nice Visual Studio is for code internationalization and would show nice examples of how many ways the forms-designer would extract code out into a resx file. I am perfectly ok with studio doing all the work for you. However there are very often, strings in your actual code that studio does not externalize to resx files.

 

Strings.rb is a ruby script that will parse your C# code base and identify literal string definitions in the code base and will move them to your resx file. The code was hacked up to fill out a personal need so your mileage on this may vary. The tool certainly isn’t fool proof and there are certain cases that it doesn’t handle too well. If you are however on the smart-scripter side of things then you may find it useful.

 

The script needs to be setup for your specific project. Once done you can run it several times on your code base and it can incrementally catch strings and externalize them for you. This is handy to have while your code is still undergoing changes so new strings can be identified as they pop up and can be moved out.

 

Getting Started

 

Downloads

1) First thing download the script (strings.rb) and put it in your project folder.

 

2) Download and install ruby from here – http://rubyforge.org/frs/?group_id=167, its about 12mb and the installation happens in a snap.

 

3) Download an install REXML library for XML handling in Ruby from here –

http://www.germane-software.com/archives/rexml_3.1.2.zip

http://www.germane-software.com/software/rexml/docs/tutorial.html

 

 

Patching Strings.rb for your project

1) You need to patch the script file to have the correct path to your resx file and the path to your wrapper class that will be used to read strings from your resx file.

 

Open the script file in a text editor. (If you have ruby installed you should find this editor called scite in the ruby installation folder – that’s a nice editor. Alternately you might want to try installing scite - http://scintilla.sourceforge.net/SciTEDownload.html - about 600k).

 

In your project identify your resx file. It will usually be in Properties\Resources.resx.

Change the following line the rb file to reflect the path path to your resx file.

strings.rb:4:$resx_fn = "properties/Resources.resx"

(The actual line number might change a bit)

 

2) Now create a new class in your project called Strings. VS should typically create an empty class definition file that looks like this.

 

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

 

#endregion

 

namespace <Some Namespace>

{

    public class Strings

    {

 

 

    }

}

 

Patch the file with the following additions

- Add a using directive for your ‘Properties’ namespace.

- Add a comment that stays //start and one that says //stop. These ad as delimiters between with the script will generate the string definitions.

 

 

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

using <Some namespace>.Properties;

 

#endregion

 

namespace <Some Namespace>

{

    public class Strings

    {

 

//start

//stop

 

    }

}

 

3) This is the wrapper class into which the script will generate string definitions. You need to patch the script with the path to this class file. Basically patch this line –

strings.rb:5:$stringsclass_fn = "helper/Strings.cs"

 

Done

If you have got this far then your installation is done and you are ready to go.

For sake of completeness let me just list out things again –

1) download the script and put it into the project folder

2) install ruby

3) install the REXML library for Ruby

4) patch the script with the path to the resx file of the project

5) create a empty Strings class and add the namespace directive and comment markers to it

6) patch the script to have the correct path to your Strings.cs file.

 

What does the script do?

The script does a few basic things.

1) it parses your *.cs files in all subdirectories and looks for strings.

2) when it finds a string a it prompts the user for an action

3) if it is a string that should be localized the user can provide a pseudonym for the string. On getting this name the script will -

            1) add the string and the name to the resx file

            2) add a property to the Strings class that will read the string from the rex file

            3) replace the string literal in the code with a call to the property.

 

Running the script

To run the script after all the previous setup, simply go to the command line and type strings.rb

 

Here is a sample run of the Strings.rb script

Let me take up a simple project and show you how the internationalization script works.

 

Here is a project that has only one Program.cs file –

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

 

#endregion

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            string a = "hello world";

            string x = "skip this line";

            string b = "escape sequences  \n\r\t\\\"";

            string c = @"cant handle this one";

        }

    }

}

 

The resx file looks like this –

<?xml version="1.0" encoding="utf-8"?>

<root>

  <resheader name="resmimetype">

    <value>text/microsoft-resx</value>

  </resheader>

  <resheader name="version">

    <value>2.0</value>

  </resheader>

  <resheader name="reader">

    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>

  </resheader>

  <resheader name="writer">

    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>

  </resheader>

</root>

(I have removed some unnecessary details from the original resx file here)

 

I created this Strings class –

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

using ConsoleApplication1.Properties;

 

#endregion

 

namespace ConsoleApplication1

{

    public class Strings

    {

 

//start

//stop

 

    }

}

 

This is what happens when you run the strings.rb script –

C:\work\vcsexpress\Sample1\Sample1>strings

Error reading skip data! continuing with no skip data.

HelloString = hello world

EscString = escape sequences  \n\n\t\\\"

Program.cs:0:n++#region Using directives

Program.cs:1:

Program.cs:2:using System;

Program.cs:3:using System.Collections.Generic;

Program.cs:4:using System.Text;

Program.cs:5:

Program.cs:6:#endregion

Program.cs:7:

Program.cs:8:namespace ConsoleApplication1

Program.cs:9:{

Program.cs:10:    class Program

Program.cs:11:    {

Program.cs:12:        static void Main(string[] args)

Program.cs:13:        {

Program.cs:14:            string a = "hello world";

"hello world">?

Help ----------

        =<name> = the string will be externalised as <name>

        sf = skip file : file will not processed on next run

        if = ignore file : file will be processed on next run

        sl = skip line : line will be processed on next run

        il = ignore line : line will be processed on next run (default)

        x, exit = exit script

        all skip information in stored in "skip_list.txt"

Program.cs:14:            string a = "hello world";

"hello world">=HelloString

            string a = Strings.HelloString;

Program.cs:15:            string x = "skip this line";

"skip this line">sl

Program.cs:16:            string b = "escape sequences  \n\r\t\\\"";

"escape sequences  \n\r\t\\\"">=EscString

            string b = Strings.EscString;

Program.cs:17:            string c = @"cant handle this one";

Program.cs:18:        }

Program.cs:19:    }

Program.cs:20:}

Writing Resource File "properties/Resources.resx" : done

Writing Strings class "Strings.cs" : done

Writing Skip data "skip_list.txt" : done

 

Effectively you can see the script run through the source file (actually it runs through all the cs files) and prompt you with each string. It also shows a little help on the actions possible.

 

To replace a string, you need to give it a name. Simply type =<name> and the string will get replaced.

 

If you don’t want to do anything about a particular line, type ‘sl’ for skip line and it will skip that line. It also adds the line to a file called skip_file.txt so that in subsequent runs of strings.rb it will not keep prompting you to patch the same line.

 

You can similarly choosing skip a file using the ‘sf’ option. You may typically want to skip the *.designer.cs files, the strings.cs file etc.

 

All skip information is human readable and is stored in a text file called skip_list.txt.

 

Strings.rb is deisgned to be run multiple times over the sample project through its development so that it can catch new strings as they appear in your code base, incrementally. The resx and strings.cs files are recreated at each run.

 

To show you the output of the process, this is what happened.

 

This is the new Program.cs file –

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

 

#endregion

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            string a = Strings.HelloString;

            string x = "skip this line";

            string b = Strings.EscString;

            string c = @"cant handle this one";

        }

    }

}

 

This is the new resx file –

<?xml version="1.0"?>

<root>

  <resheader name="resmimetype">

    <value>text/microsoft-resx</value>

  </resheader>

  <resheader name="version">

    <value>2.0</value>

  </resheader>

  <resheader name="reader">

    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>

  </resheader>

  <resheader name="writer">

    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>

  </resheader>

  <data name="HelloString">

    <value xml:space="preserve">hello world</value>

  </data>

  <data name="EscString">

    <value xml:space="preserve">escape sequences 

 

       \"</value>

  </data>

</root>

 

Notice that the two strings have appeared here.

 

And this is the new Strings.cs file –

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

using ConsoleApplication1.Properties;

 

#endregion

 

namespace ConsoleApplication1

{

    public class Strings

    {

 

//start

              // "escape sequences  \n\r\t\\\""

              public static string EscString { get { return Resources.ResourceManager.GetString("EscString"); } }

 

              // "hello world"

              public static string HelloString { get { return Resources.ResourceManager.GetString("HelloString"); } }

 

//stop

 

    }

}

 

Also, if you are interested in seeing the skip data, this is the skip_list.txt that got created –

Program.cs:::string x = "skip this line";

 

Limitations

1) The string matching that is done by the script is fairly limited. Basically it identifies strings in the the c# code by comparing with the following regex –

strings.rb:15:$string_pattern = /[^@]("(\\.|[^\\"])*")/

This does not cleanly cover all sorts of escape sequences that a string can have. It also does not support @””. But .. well… this covers large number of strings that you would face, so its good enough to get along. Also if you can get me a better pattern match, I would be happy.

 

The script iterates over all strings on a line of cs code using –

      line.scan($string_pattern).each {|str,e1|

            //str is the string

      }

 

 

2) The resx file tags that are generated by script are those that are valid for Visual C# Express Edition Beta 1 format. I don’t know if this resx format is valid for other versions of studio. I would expect that it is. Even if it is not, you can easily patch it for you version of studio. This is how –

 

The resx file has a tag added for each string definition that looks like this –

  <data name="HelloString">

    <value xml:space="preserve">Hello world</value>

  </data>

 

If your studio generates tags like this, then you are ok. If you are not just patch the following block of ruby code to generate your tags. It’s fairly easy –

            el = doc.root.add_element "data"

            el.add_attribute("name", key)

            val = el.add_element("value")

            val.add_attribute("xml:space","preserve")

            val.text = remove_esc_seq($map[key])

This is part of the writeresx() function.

 

3) The escape sequence handling in the script is a hack – its funny – it’s limited. It’s actually a little sad:

def add_esc_seq(str)

       str.gsub("\\", "<double_back_slash>").gsub("\"", "\\\"").gsub("\n", "\\n").gsub("\t", "\\t").gsub("\r", "\\r").gsub("<double_back_slash>", '\\\\\\')

end

 

def remove_esc_seq(str)

       str.gsub("\\\\","<back_slash>").gsub("\\n", "\n").gsub("\\t", "\t").gsub("\\r", "\r").gsub("\\\"", "\"").gsub("<back_slash>","\\")

end

 

These are however good enough for \r \n \t \\ \” etc.

 

4) The resx XML doesn’t look too nice. It works however. This is because the REXML library produces badly formatted XML. You can download the XML Pretty Printing program on mine and run it on the output resx file for pretty XML formatting.

 

5) “The setup is a little contrived and all this requires me to know ruby programming “

If you actually said that then this script is not for you. For the simple reason that this is something home-grown and not meant to be a polished product in any way. You don’t need to know ruby much to just get it working. You need to know ruby only if you need to extend it in non-obvious ways. Secondly the setup isn’t that contrived if you have been using ruby. You would, most likely, have most of the tools in place already.

 

Finally, Why Ruby?

My only real answer to the question is that I wanted to get the job done. For an example take a look at the engine code and peaceful separation that it gives me from the prompt/ui code.  

 

That’s it. So if you are geeky enough and consider it below your dignity to get down to doing a menial job of looking through source files and copying out strings to the resx files – then this script might help you.

 

Download Strings.rb

 

Ps. It’s a lot of effort documenting any ruby program that is more that 200 lines. It just does too many things.

 

Monday, January 17, 2005 8:40:18 AM (Eastern Standard Time, UTC-05:00)  #    Comments [9]  | 
 Monday, December 13, 2004

Frodo: What are we holding on to Sam?
Sam: That there's some good in this world, Mr. Frodo... and it's worth fighting for.

My blog just crossed 10 thousand unique visitors. Yippie!

Monday, December 13, 2004 3:30:52 PM (Eastern Standard Time, UTC-05:00)  #    Comments [20]  | 
 Saturday, November 06, 2004

To Neha, a good friend and an amazing singer,

I just loved the way you sang Bobby McGee the other day. It’s playing in my mind right now right now.

From the coalmines of kentucky to the california sun,

Bobby shared the secrets of my soul,

Standin’ right beside me through everythin’ I done,

And every night she kept me from the cold.

The somewhere near salinas, lord, I let her slip away,

She was lookin’ for the love I hope she’ll find,

Well I’d trade all my tomorrows for a single yesterday,

Holdin’ bobby’s body close to mine.

 

Freedom’s just another word for nothin’ left to lose,

And nothin’ left was all she left to me,

Feelin’ good was easy, lord, when bobby sang the blues,

And buddy, that was good enough for me.

Good enough for me and bobby mcgee.

 

 

 

The weather in Hyderabad is great these days. Maybe, the only time of the year when it is as pleasant.

 

I am upto reading 3 books in parallel these days and I wish I wasn’t because they are nice books.

 

One of them is called ‘The Naked Bachelor’ by Darrel Bristow-Bovey a hilarious collection of articles on how to get around. I highly recommend taking a look at this if you ever come across it. This book can always be read in parts and even has a certain Douglas Adams Hitchhikers quality to its humour in parts.

 

The other one is ‘A Homage to Catalonia’ by George Orwell. I am midway through this and the narrative is beginning to change flavor and I am reading it with much trepidation – the last time it was 1984 and it left me feeling that my ancient empty streets to dead for dreaming for a long log time. I still shudder.

 

The third is the eternal Fountainhead by Ayn Rand. (Yes Pooj, I finally picked it up, how could I not). I have just started by I have taken a liking to it already. Maybe I am heaping too large a compliment on myself, after 20 pages, what seems to be Howard Roark’s inherent functional perfection of buildings is seems close at heart to what I feel is the same way good software is built – not so much about UI as much as a comparison with architecture would imply – but about the beauty in which the functional pieces of the software come together inside; like Pirsig’s motorcycle.

 

Reading Fountainhead reminded me so much of A Separate Peace, a book that keeps coming back you to in thoughts in the most unexpected circumstances.

This picture is taken from the Philips Exeter academy’s page about The Separate Peace.

If there is a legal issue about the use of this picture please do drop me mail.

 

Saturday, November 06, 2004 9:25:08 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Thursday, September 30, 2004
  Mish Mash 

Aah! its good fun to be blogging after a long time now. I had a sort of internal deadline a few days back and life seems generally peaceful since.

 

Which gives me room to write about lots of things that I had been meaning to write about.

 

Hyderabad and life

 

Hyd has so far been a fun place to be in. I stay in a one bed room apartment that is about 3 to 4 kilometers from office. It is a nice locality with few houses that are well distanced from each other. There is a lot of open land and a nice backdrop of rocky terrain.

 

Having done little other that computerese the past few years, it is good fun to be maintaining a house and to be figuring out some cooking. Also one of the newly picked up interests is cocktails. I have not been drinking too many yet, but I am beginning to realize that there is this entire subculture to preparing and inventing cocktails which would be good fun to explore. This blog may well stop being about computing totally and be one about cocktails in the tear future. Like one of teh books I picked up about cocktails said “learning a lot about being the reason why people have a good time“.

 

The thing about making cocktails is that its really hard to get the right ingredients when you are starting out and there is no really easy way to experiment and learn – things start seeming uniformly good or bad after a few drinks.

 

I am also (by my own definitions) beginning to turn into a master chef. I keep having vague sentiments about being a chef or a bartender as an alternate career track. Since I am a relative new comer to drinking alcohol (yes) and to cooking, both of these might take a while – however I am looking forward to evenings with friends and home made cocktails.

 

Microsoft

 

Working at Microsoft is different compared to many places you would work in India. Other than the technology, and the other stuff that I could go on about endlessly - like my manager potentially filing for nearly two dozen patents this year - at Microsoft the senior guys tell you things like “plan things so that none spends the three day weekend at office”. Its nice to be in a place like this. Its highly individualistic, you are given ownership, you are expected to run your own show, accomplish more five fold of what you would do at another place and do it in style – and have time for things like learning to be a bartender. :)

 

More Life

 

I have been having conversation with all sorts of people. Its hard to find people who believe in computers for love of the machine and logic. Its even harder to find believers. Lovers and believers... I am also beginning to realize that talking to people who have a life outside of computers can actually be fun, strangely. :) And in computing I have been some smart folk and some of the prostrate masses as well...

 

I had a conversation with a couple of folk some days back, who believed something to the effect that Windows should not penetrate the academia, because if it does, 'people will not learn anything'. The argument was that since windows is easy to use and that the IDEs and such were fairly complete people would never understand how the underlying things ever worked. The argument was also heavily biased towards the command line and how Windows does not encourage you to use the command line even though the command line is intrinsically better. That kind of talk gets a rather more measured response from me these days that the push-comes-to-shove responses of some time back. Its actually an interesting exercise to see how people can cling onto opinions because they implicitly see a certain safety in having them, as opposed to letting go of them.

 

Today there was conversation about piracy with some other folk. Should Microsoft be cracking down on piracy legally because piracy does actually causes material harm? My stand that was that it shouldn’t as things are right now. I feel that some pieces of software (not just from Microsoft) are actually rather expensive for the Indian-rupee economy. Piracy would be far better handled if prices for certain pieces of software were actually reduced hand in hand with awareness about what offers and alternatives are available. The user groups and the communities can and will play a very large part in this. Once I think the systems are in place, and they are getting in place as we speak – there are offers and options available that people simply don’t know about – then might be a better time to tighten the legal crackdown on piracy.

Can we ever completely eliminate piracy? I don’t think so – but that is not necessarily we are trying to achieve. We can easily make a large portion of the people who are presently not using legal software to start using legal software by making them see value in it. There are simple value propositions like free upgrades and patches for legit systems, possibly vendor provided antivirus packaging, support, merely the fact that you are doing something morally correct which when know would change the minds of many people. Will there always be freeloaders? Yes, but that is not the problem that we are trying to solve here.

 

Learning

 

I spend some time with someone at Microsoft showing how to use the fabled windbg. Really interesting. I guess I am so impressed because I haven’t used a debugger very much at all in the past. Most of the code I have been writing has always been debugged with some variant of the ever useful printf-debugging. I wish I was doing that with Govind Kanshi at Bangalore.

 

Among new pieces of information, there is a new public drop of Monad beta available. Take a look.

 

More Microsoft  

 

Microsoft is full of internal websites about every conceivable things in the org. We have HR, Library, internal resources etc etc lots of the standard stuff. Then the interesting stuff like websites for each group – like one about the debuggers, one about sfu, one (or more) about every conceivable product that you can think of. Its like a whole ecosystem in here comparable to that outside.

 

Microsoft also still has a small company attitude inside in the sense that a lot of decisions and flexibility is left to the choice of those who wield, rather than be dictated randomly by a higher authority.

 

The peace that I mentioned at the start of this post maybe changing – my project is going to be part of Longhorn… what good fun.

Thursday, September 30, 2004 6:25:41 AM (Eastern Standard Time, UTC-05:00)  #    Comments [14]  | 
 Monday, August 30, 2004

Time, wither goest thou.

 

I got my first mail from the great Somasegar today.

http://www.microsoft.com/presspass/exec/somasegar/

 

I also got mail from Jim Allchin today

http://www.microsoft.com/presspass/exec/jim/

 

Neither of these were directly to me, they were to a group alias, but all the same – its one of those feelings to see mails in your inbox from these folk.

 

I also helped get my first piece of code checked into the great windows source tree. Mind blowing! If I break the windows build things could get hot here real quick :-) I also had part of my NEO today (New Employee Orientation).

 

I also have selected a house at Hyderabad. A reasonable two bedroom flat, about a kilometer from office. The weather in Hyd is rather moderate these days. Lots to say, no time :-(

 

Monday, August 30, 2004 10:23:22 AM (Eastern Standard Time, UTC-05:00)  #    Comments [10]  | 
 Saturday, August 21, 2004

Hi Folk, firstly, sorry for not being around in the blogosphere for a while. Life has been changing far too rapidly, with castles building up in the air and floors collapsing beneath my feet rather too often, in the past month or two.

 

Life is settling now and I have things to say -

 

I am joining Microsoft Corporation. I will be working as a developer at the Microsoft India Development Center (IDC) at Hyderabad, on the Windows team, starting Monday Aug 23rd 2004.

 

On a personal note, there is a feeling of peace now. I had too many things I had been keeping up with recently – two user groups in different cities, a lot of community stuff, some insanity related to job shifts, following up frantically on the far corners of technology from design of VMs like Parrot and Scheme interpreters to CLR internals, language design, compilers, distributed systems, SOA and protocol architectures, getting under the hood of more things than I care to mention and a personal life that was spinning round and round. Of course, I was always also trying to keep a day job and a blog as well. All things seem to be settling now, or at least seem to be finding their own relative peace.

 

I am looking forward to the intellectual charm of the high halls of technology. The plan right now is to slow down for a few months, enjoy the company and the work, and to learn. Take a sabbatical from my thought-chataquas, relax on a few things and enjoy the blissful calm and peace of being a developer on a tight project at Microsoft.

 

For a while I might be rather quiet. Then maybe start working up speed towards those nagging ideas that come by and hold my mind and say “Roshan, I am not going to let you go until you have me solved”. I am not sure what they are going to be right now, but I have a feeling that they might have something to do with dynamic languages and a certain runtime…

 

Come gather 'round people

Wherever you roam

And admit that the waters

Around you have grown

And accept it that soon

You'll be drenched to the bone.

If your time to you

Is worth savin'

Then you better start swimmin'

Or you'll sink like a stone

For the times they are a-changin'.

 

...

 

The line it is drawn

The curse it is cast

The slow one now

Will later be fast

As the present now

Will later be past

The order is

Rapidly fadin'.

And the first one now

Will later be last

For the times they are a-changin'.

 

Bob Dylan

The Times they are a Changin’

1963

 

Saturday, August 21, 2004 7:50:10 AM (Eastern Standard Time, UTC-05:00)  #    Comments [212]  | 
 Friday, June 11, 2004

Since yesterday I have been thinking about NDAs. Yesterday I wrote the entry below about Monad and Pooja wrote hers, and I have been thinking.

 

The reason is this – MVPs before being awarded the title have to sign an NDA that says that certain information that Microsoft may reveal to them may not be publicly disclosed. The NDA is one in good spirit where employee of Microsoft who are part of product teams and doing such other core work may freely interact with MVPs about future products and ideas that are still being tested and such. A lot of MVPs actually give direct feed back to the product teams which reflect on the products that you see tomorrow.

 

The MVP program by its very nature is an award program and the winner of the title doesn’t directly commit anything to Microsoft. So a lot of the feed back from MVPs is neutral and critical in a very constructive sort of way, because MVPs really love their technology.

 

The problem with the NDA is simply that of late most MVPs (at least in the India circuit) don’t have a clear way of saying what is under NDA. We actually get to hear SO much about so many things happening that we are really not sure. So breaches of the NDA do happen simply one did not know that an item is under the NDA.

 

One thing that we were told of is that when in doubt – check with your MVP lead. That happens, but sometimes that is not very feasible. Sometimes you don’t even think of checking about something. Which is when another ‘rule of thumb’ was proposed at the India advocates day, 2004. At IAD it seemed ‘common-sense’ that what ever we can find on the web already is simply not under NDA – if we know something and it is not on the web yet (duh?) then it is under NDA.

 

This makes things a little tricky. Like when writing about Monad, I realize that a lot of information is actually available on the web – admittedly in bits and pieces, but still there. Now that I have access to the stuff as part of the beta program, can I write about it or not? We had a discussion last night with the India MVP lead and the ex India MVP lead and some of the Bangalore MVPs and to my surprise I was hearing that none of the stuff from the beta place could actually be disclosed. Also the above ‘rule of thumb’ stands corrected to ‘anything found on the Microsoft site is not under NDA’. !

 

Now that has some obvious contradictions – how for example do I know that I am talking about confidential information when the information is publicly available in some form? If there is a document that marks it as confidential but I do not have access to the document, does that make me in violation of the NDA? If I do have access to the confidential document, then what happens to conclusions I can draw from public information that is not explicitly stated elsewhere (though deducible) but is present in the document?

 

Some of this got me thinking today morning at the hacker Knight Lightning’s trial a decade back. Knight Lightning was brought to trial by the US secret service for stealing a confidential AT&T technical document that was estimated at 70k dollars or more (forgive my fading memory). The document was the centre of the debate there and in some sense was treated by the prosecution as being too sensitive to show even during the trial. The then newly formed Electronic Frontier Foundation under John Perry Barlow and Mitch Kapor came to Knight Lightning’s aid in the defense. It turned out that the document hardly discussed technical details of a sensitive nature. The cost of the document was a grossly over exaggerated figure, piled up as sheer administrative over head costs (things like the cost of the computer system used to typeset the document were added as the cost of the document). And as a final blow to the case it turned out that AT&T was actually selling documents of a similar but more technically detailed nature for hobbyists and enthusiasts to use (for about 13 dollars?) – which neither the prosecutors nor Knight Lightning knew about.

 

The issue about information being confidential while still being available in some form publicly is a very tricky one.

 

My own first exposure to the term ‘NDA’ was when I heard the recording of a speech by Richard M Stallman (founder of the Free Software Foundation) at Slovenia. RMS was talking about how an NDA imposed by Xerox for the printer driver software hurt the guys at MIT who were trying to fix a faulty laser printer that kept getting jammed. Stallman’s message was that NDAs “do have victims”. He did make several valid points and after listening to RMS several times I was sensitized to the issue of NDAs. So admittedly when I signed my first NDA with the company where I work, I did so after reading the document over several times and did it with shaky hands.

 

The issue about writing about Moand itself is a simple one – I had dropped a mail to the one of the contacts on the Monad team and I got prompt response. A few clarifications are left, but it seems to me that everything is in good faith now. In the case of Monad itself it is not an issue, especially when most of the folk at MS are so approachable and prompt when it comes to an relevant issue. The MVP crowd and the people around the MVP program are also were receptive and quick to respond about any queries.

 

However the general issue about NDAs itself is a relevant and could because serious issues really quickly, if communication between parties is not as transparent as in cases like mine.

 

Add to that I heard this rather recently – you cant reveal that you are under NDA? What? There is a lot I don’t understand. The thing about systems programming is that opinions are fact clearly distinguish each other – at least they are only a compilation away. Matters like this….  :-)

Friday, June 11, 2004 2:06:28 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Sunday, May 23, 2004

How many of us recognize the name of this man?

 

Mitch Kapor was the founder of the Lotus corporation. He was the man who designed the Lotus 1-2-3. If you know you history, Lotus was one of the only large applications companies that was a serious challenger for Microsoft in its early years. There were years spent over the battle for the spreadsheet that was fought on both the old Mac as well as the old DOS machines.

 

Microsoft’s offering those days were called Multiplan. Multiplan was fairly beat by Lotus 123 in almost all fronts. Microsoft eventually thought through their faults and strengths and eventually released Excel – the spreadsheet battle was over.

 

Mitch Kapor himself, is one person I think of as being fairly amazing.

 

He was co founder of the EFF, the Electronic Frontier Foundation along with John Perry Barlow. The EFF was the organization that for the first time stood up for hackers rights and digital rights. This was of significant and epic proportions in the early 90s when hacker arrests and crackdowns were gaining a witch-hunt like momentum.

 

“The EFF is a non-profit civil liberties organization working in the public interest to protect privacy, free expression, and access to public resources and information online, as well as to promote responsibility in new media.”

 

The EFF was the organization that for the first time took the American Secret Service to court over the ruling and prosecution of the ‘hacker’ Knight Lightning. The EFF won and it literally brought the end of an era about how people of ‘hackers’ and the rules for information security.

 

I highly recommend reading this book called the Hacker Crackdown by Bruce Sterling. The book reflects the ethos of a time when the parameters of information security were very different from how we think of them now. Considering the license of the book, what it intends to convey and what I hope it may change about your thinking, I would recommend downloading a softcopy of the book.

 

Today I happened to come across Mitchell Kapor’s website and blog.

Website: http://www.kei.com/homepages/mkapor/

Blog: http://blogs.osafoundation.org/mitch/

 

I found this entry, right on top and I couldn’t help smiling:

 

May 09, 2004

Now I'm Mad

 

Some idiot Atkins Diet spammer just posted 53 bogus comments in this blog. I'm disabling comments (globally) shortly and figuring out if there's any recourse.

 

They don't know it yet, but they picked the wrong person to do this to.

 

 

Sunday, May 23, 2004 8:24:41 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Friday, May 07, 2004

Hi Folk, Pooja is away on a vacation to Rajasthan.

 

"am leaving for a vacation trip today. Its after 8+ years  that I am going to be traveling to Rajasthan, am quite excited. I am back on 17th May. I am going to Gujarat, from there to Udaipur. On the way back will be visiting Nadwara and Bombay.

 

Will have lots to say when I am back. I wonder how life is going to be without a computer for 2 weeks at a stretch :)). I wish I had a digital cam, that is one of the things I am going to get soon after I am back.

 

Adios!"

 

(abridged from another short opinionated big-nosed man of French descent)

I don't know about other countries, but here in India, we have a ritual we call "LOTAing."

 

When you "LOTA" something, it means that you cover it in toilet paper(umm.... )... wash the floor with a small lota of water. Typically, you would "LOTA" the house of one of your friends for a practical joke, although you might also just "LOTA" the house of the codger down the street who always tells you not to try to chew gum while walking and carrying a loaded machine gun with the safety off at the same time (some people are really uptight).

 

Anyway, Pooja is currently out of town and she does not have access to a computer, which means that her blog is wide-open for a good "LOTAing."

 

I was thinking we could "LOTA" the comments section of this post.

Just so that you don't have any excuse not to, here's a link to the page where you can post your "LOTA" comment (just write something like “LOTA!“ as the comment).

 

Also, you're probably thinking that this is pretty immature.

 

Well, you're bloody-well right. But do it anyway :) It'll be fun... It isn't often that you get a chance to LOTA the comments section of one of The

 

Greats.

cheers!

 

Friday, May 07, 2004 12:56:14 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Friday, April 16, 2004

After smoothing a out a few issues that dasBlog has, this blog is now functional. dasBlog requires that the user under whose permissions ASP.Net is running was write permissions to the folders - content, logs and siteconfig. On a win 2003 box ASP.Net runs as \NETWORK SERVICE.

So what you need to do, if you are setting up dasBlog, is to allow wirte permissions to our 3 folders.

This is also fine time to roll out some links:

Channel 9
Some folk at MS have dished out Channel 9. Channel 9 is where you can see into the big borg entity of MS and maybe come away with the feeling that they are not a big borg entity at all.
http://channel9.msdn.com/

IronPython: Python is being shifted to .Net by Jim Hugunin.
He is the same person who developed Jython, the Java implementation of python. .Net has been for sometime considered a difficult platform to shift to for dynamic languages such as Python and Ruby. Ruby might be a tad bit more difficult beacuse of all the tricks it does with continuations, closures, iterators and such.

http://www.hole.fi/jajvirta/weblog/20031210T0901.html
I'd guess that anyone who reads this weblog also reads Jeremy Hylton's weblog (which is in my opinion currently perhaps the best technical Python related weblog), but I still thought it was worthwhile to mention that the great Jim Hugunin has a new project, named IronPython, which is an implementation of Python for the Microsoft Common Language Runtime environment. The remarkable thing is that IronPython runs faster than the Python implementation in C according to the pystone benchmark. (See Hugunin's original message for full details.)

Miguel de Icaza, lead developer of the Mono framework, also comments on Hugunin's remark with delight and says that this might "stop the meme of '.NET is slow for scripting languages'".

Hugunin himself is busy for the whole January, but hopes to continue the development of IronPython after that.
Written by Jarno Virtanen at 2003-12-10 09:39

Miguel De Icaza and Nat Friedman go dancing(!) with Microsoft's CTO
http://primates.ximian.com/~miguel/archive/2004/Apr-12.html
This is a must see.

Electronic Intifada
I found this on Miguel's site and I wish more people cared.
http://electronicintifada.net/new.shtml
The Electronic Intifada (EI), found at electronicIntifada.net, publishes news, commentary, analysis, and reference materials about the Israeli-Palestinian Conflict from a Palestinian perspective. EI is the leading Palestinian portal for information about the Israeli-Palestinian conflict and its depiction in the media.

The Phoenix Research and Development Kit from MSR
This is one of the things, where, I feel, the future is brewing. The Phoenix RDK is a language/compiler/runtime generation and research framework comparable in scale (with the little that I know) to the National Compiler Infrastructure (NCI) project.
The Phoenix RDK homepage: http://research.microsoft.com/phoenix/

Friday, April 16, 2004 12:02:50 AM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  | 
 Thursday, April 15, 2004

Very soon I should have a blogging engine of my own up and working. I got a copy of DasBlog and with a bit of tweaking it seems to suits me rather fine. I would however like to see

·         Hierarchical comments

·         Ability to delete comments without getting into XMLs

·         Enabling description views only on certain aggregate views.

·         Where is the archives feature?

 

The blog should be going up on www.thinkingms.com, a site that is run by Pandu. The only problem is that I don’t seem to be thinking MS all the time :-)

 

Until the blog is formally up I guess you will see me manually predate entries at the end of each entry.

 

(To the tune of Jingle Bells)

blogging site blogging site

blogging all the way,

oh what fun it is to send

an entry on its way ... hey !

Apr 15 2004 Thursday 12-23PM

Thursday, April 15, 2004 1:55:29 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 

If you had to find me on the net where would that be – read on. Why would this be interesting for anyone is because if you happen to share the same interests then you might come back to reading my blog, and maybe I could get to know you too.

 

Homepage:
http://www.thinkingms.com/pensieve/homepage

This is like great general mish-mash, hitch-hikers style. If you want to download any of code I have written, then you might want to go here.

 

DDL project homepage:

http://ddl.sscli.net

I am co-author of the DDL language. The DDL or Data Definition Language is a language for defining binary data formats. What the DDL essentially lets you do is that you can define a file format in DDL format (which is rather intuitive, if you understand how to write structures and if conditions in C) and then host the DDL interpreter in a program that you write. The hosted DDL interpreter lets you interact with the file format on the disk, even with individual bits, without you having to develop any of the file handling code yourself.

 

Technical Communities:

http://groups.msn.com./bdotnet

http://groups.msn.com/cochindotnet

These are .Net user groups in India. The first one is the Bangalore user group, the largest in the country with 2300+ members and the second one is the local user group at Cochin, where you have ~200 members. Some of these groups are great places to fish for ideas.

Apr 13 2004 Tuesday 01-56AM

Thursday, April 15, 2004 1:29:10 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, April 14, 2004

It's been a long time that this has been getting postponed for, but here it goes - this is my first blog entry. Well, it's not a real blog entry, in the sense that I and not typing this into a blogging software but rather am typing this into a word document. In time I will find a blogging engine or write my own and have this up on the net.

I am a computer science graduate from Model Engineering College, Cochin and am currently working with the great Indian software industry at Bangalore. I work with this technology called .Net - if general computing holds an interest for you, then the term might be familiar.

I have a homepage here:
http://www.thinkingms.com/pensieve/homepage
where I have some work that I have done, handful of articles and other stuff related to my general existence and interest around computers and computing.

I indulge (or at least used to) in a certain manic amount of programming. I am not very old in computing, as old as some people I have had the pleasure of knowing. My first real exposure to programming was in the summer of 96, when I started out with programming on Foxpro (yes, believe it).

Strangely as fate would have it then, a lot of Cochin city was running old boxes and 386 machines were a luxury. So it was like I had the chance to grow up in a time warp. And needless to say, most machines ran (the now mythical) DOS.

DOS programming, especially once you start playing around with TSR's and SVGA and writing GUI routines and simulate your own multitasking environments was a very special kind of education. I don't know if any of the future generation will ever have that pleasure and honestly, since I have never seen it any other way, I wonder if they will ever see these things and feel the joy of writing values onto your VGA card's control registers.

It's been a funny trip since then and I presently spend my time of Windows boxes. I spend my time exploring *nix boxes for a while in between, but try as I might they did not hold my fancy very much. Probably I learned things the wrong way, but I used to compare things to what I could do in DOS and that just killed the joy in everything.

In that sense .Net is probably one of the few real pleasures that I have come across. A very sensible mature platform with very good design choices and excellent implementation. Some of my early attention to .Net seemed have got me some attention too (http://www.microsoft.com/india/mvp/indiamvp.aspx#RoshanJames). I also try and stay true to my C/C++/Asm roots. I also have an indulgence in Ruby (the programming language) - Ruby is an excellent dynamic language with support for neat constructs such like closures, iterators, dynamic interfaces, mixins and more. It also brings continuations and some real beasts of programming as well, in addition to being a fully object oriented general purpose interpreted language with a nice libraries and good integration of regular expressions and flexible collection types in the language. One difference with Ruby and other languages, esp Perl (or what little of it I have tried) is that Ruby actually makes you feel happy while writing a code; unlike the sort of happiness you feel when you are glad you have finished coding.

In addition to the 'way of the code' I like music - Bob Dylan, Simon and Garfunkel, U2, Cat Stevens/Yusuf Islam, John Denver, Don McLean

I think I will stop on my first entry now.

Debugging is twice as hard as writing the code in first place. Therefore, if you write code as cleverly as possible, you are, by definition, not smart enough to debug it.
 
- Brian Kernighan

Apr 13 2004 Tuesday 01-18AM

Wednesday, April 14, 2004 9:04:25 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |