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]  | 
 Friday, November 05, 2004

This is the sort of thing I have avoided writing about and thought I would not be, for a long time to come – I was afraid to too, mostly because I felt I would be able to or would get too involved in warding of the slack I would get for saying this. But reading this article that Sriram had linked to in his blog brought a mountain of stuff tumbling down. (I don’t know why I am so much into this software-ethical-stereotype thing these days, I have work to do you know). Before you go ahead and read the article linked above, here is what I have to say. This is not a long story, but one of those minor incidents that have stuck on to gnaw at my phsyche.

 

Rewind several years back to when I was in my second year of undergraduate studies. I had just got my first computer (yes) and Pooja had got hers. We didn’t really have internet connections those times, though we did have the modem and required hardware. We eventually figured that if we needed to talk to each other, we could use one of those direct modem-to-modem dialup software. After a lot of tinkering with dialup software and modem settings, we had something going that mostly worked for us. I had a copy of some old dos based software – I cant seem to recall its name – that we used to dialup each others computers and basically ‘chat’.

 

The software was the most reasonable one I could find for our purpose, but was however seriously limiting and got rather frustrating after a few weeks of use. God-geek-in-the-making that I believed myself to be those days, I figured that the only way I would get things to happen my way is by writing a modem communication software of my own. (I know what most of you might be thinking, but those days it wasn’t too surprising to see how often this particular approach was the panacea to all my ills).

 

Those days I also got a chance to talk to one of the few men who seemed to know everything, or atleast had a damn good idea about how to get to know the few things that he might have missed. I got a chance to talk to Jayakrishnan K about the modem’s idea that I had on my mind. JK would know about these things – he should because he had written Kerala’s first BBS (bulletin board service) by hand (as a couple of COM files on a DOS machine doing all the multitasking and all). A short discussion later, I had my head full of X-Modem, Y-modem, Z-modem etc and I was reasonably charged up. The error control would be hard, he had warned me, but that was ok.

 

So I got home and start off, eventually I figured that I probably wasn’t as smart as I thought I was. I was using intervue (Ralf Brown’s fabled Interrupt List (Ralf Brown is now Professor at CMU)) for reference. Somehow some things didn’t seem to make too much sense and I needed more information on how to initialize the modem correctly.

 

This is where GPL stepped in. I turned that in the pile of commonly shared source and software in the college students circles I had a piece of software that did modems communication. I wasn’t really sure what the full intent of the software was, but It has what I wanted – it had assembly code to initialize a modem and set all the settings and such. And being assembly code that manages a hardware device there weren’t too many ways about – you had to load some registers, write to some ports, call some interrupts etc in a certain fixed sequence of ways. Well if you are creative, you can think of several ways of accomplishing the equivalent of

Mov AX, 10

But that by itself didn’t mean that the code to initialize the modem would be written very differently by me, once I had seen how it is to be done. It also turned out that the software (as you would be expecting by now) was GPLed.

 

After the excitement of reading the ASM snippet I had a look at ‘COPYING’, the GPL text file. It seemed to me that if I were to use this piece of code from here to write my modems software to talk to Pooja the entirety of the code that I write would have to fall under the GPL license. It would not be my code anymore. Which is to say, that I would not be free to decide what I do with it – weather I sell it or hide it or share it – that choice would not be mine anymore. That was really disturbing for a while, because here I was wanting to write that piece of modems communications software to talk to a friend and I had a solution in hand, but there was nothing I could do about it – without subjecting myself to legal risk, had I written the software and shared it around without giving away my code. That was my first introduction to the viral nature of the GPL, though at that time the only word I could think of was ‘unfair’.

 

Then I figured that I probably needn’t tell anyone and I could write my software anyway. But then I wondered what would happen (with the notion of fame) that I had this famous piece of software and then one day someone realizes that I actually did have this piece of software on my hard-disk and then they would say that I stole this code illegally. This bothered me a lot because I like to think of myself as an ethical person and tend to get reasonably bothered by the converse. Immature as it may seem, I also wondered if no one could ever write modem’s communication software again.

 

And in time the feeling came to pass, and my code never got written and we used the same old piece of software until we bought ourselves internet connections and things blew over. I still wanted to know if there was a way out.

 

Years later when I had my first chance to meet Richard Stallman, founder of the Free Software Foundation and the GNU project and author of the GNU GPL, I wanted to know if there was a way for me. But in the passing time many other things were beginning to affect my thinking and I was beginning to be more bothered about the small programming communities and their spirit of unbounded sharing and coexistence with the commercial world that the rising tide of GPL acceptance seemed to be wiping out. I feared for those communities and I felt I was part of them.

 

When Stallman finally did come, he was visiting model Engineering College to talk about the danger of software patents – on his first ever visit to India. And then there were people there at the talk, who were asking Stallman how they could detect if someone has used GPLed code in their own software, maybe after modifying it. How they could track down these people and bring them to court. And there I was, wanting to ask the exact opposite – about how I could be protected for using GPLed code because there was no other obvious way to do something esp once you have seen one approach that solves the problem. The question about who protects the programmers.

 

My question never got asked.

 

People around me told me that my concern was unfounded. Things like that don’t happen. Nobody is bothered if you take from GPL code they said. Its just there to be a moral standard they said.

 

Last year, for some uncalled for reason, the topic came back again. This time over train ride home to Cochin from Bangalore when I was traveling with Sidharth. He didn’t see the problem and I was going on raving from the Karnataka border to Ernakulam railway station that its getting dangerous that there is so much GPLed code out there just lying around on the web, crawled by search engines and popped up at you without your ever intending. And if you took from these – copy paste from your browser that smart little three line snippet – you are strictly speaking, subjecting yourself to illegal usage of GPL code.

 

Over the years also I have developed this habit in programming when I am stuck I usually search the web for a solution. Maybe a smart little hack or a piece of advice on how to do something and I am chugging along smoothly again. After joining Microsoft two months back a few colleagues here advised me against doing this – you never know the legal implications of what you are doing they said. It seemed a little odd then, but then maybe I had been forgetting where I was coming from. I do use the web a lot – but now with this additional fear factor and layer of caution – and I wished I lived in a world where ‘freedom’ was a different, more real sort of freedom of choice.

 

Then I found this article : http://www.icsharpcode.net/pub/relations/amatterofinspiration.aspx

I do not know who is right and who is wrong in this debate, but I can empathize with the factors that caused it to originate. This is from the group that creates the rather well know .Net IDE called #develop – an alternative to VS and commercial IDEs and is often recommended to students…

 

I had been procrastinating making this post for some days now. Esp Chris Pratley’s words ring so close to my fears I've been a little gun-shy of blogging about Word for fear of being inundated by what are as far as I can tell a gang of "net thugs" who roam the net making...”. Hopefully this will be the last thing I need to have to say about this entire topic for a while. My blog is getting increasingly dedicated to writing stuff that I get dragged into rather than stuff I like getting into.

 

DO NOT hold this in perspective of my employer or any previous employer or any other context - these are purely my OWN OPINIONS done on my own steam and is not nor was ever was part of any job description of mine.

Friday, November 05, 2004 2:02:13 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, November 03, 2004
  Redmond 

 

Pooja is in Redmond these days...

 

Wednesday, November 03, 2004 1:49:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [7]  | 
 Monday, November 01, 2004

So quiet frankly, I

1)       am a fraud

2)       am trying to deceive people

3)       am not ‘worth the trouble’

4)        - to say that I am not ‘worth the trouble’ is misleading, because it implies that there is some potential good to be achieved otherwise

5)       am upto doing bad things, pure and simple

6)       am starting phony open source groups

7)       should have evidence collected against me

8)       – you should be organized against me

9)       should be denounced as fraud

10)   should have protests staged against each of my meetings

11)   should have articles written about my deceptions

12)   should be treated as a liar

13)   should not be treated as respected or legitimate

14)   should have universities close down programs because I am a liar

15)   should have this campaign against me renewed each year

 

If I missed something in the above set, I apologize.

You can read it all and more here -

http://mm.gnu.org.in/pipermail/fsf-friends/2004-October/002484.html

 

The reason this applies to me is because I often talk to my juniors at college and to students as well as professional developers about .Net. I do talk about it as an open platform and I believe that they should adopt it, learn from it, use it and develop on it. (A few days back I had come across this)

 

Sriram, now you know why (like Jack Nicholson) says ‘we can’t all get along’. I have tried and fell flat on my face, several times.

 

Noufal, now you know why I don’t think that MIT’s AI labs success has nothing to do with the GPL and think that the FSF is a political agitation/movement more than anything about technology or software. Unfortunately their sphere of influence is around technology.

 

If the things I do warrant that the above apply to me, then I am not ashamed of any of them.

 

 

 

Kids, if any of you in college are reading this, then here is a piece of mindspace – you are in college/university to be learning, not to be religious or have political ideals. Learn the goods and bads of every system – but more fundamentally try to learn about as much as you can about the art of computer science – that is so rare and there seem to be so many fewer people who know about it.

 

 

 

Now, here are some basics, you just need to be able to read and think to understand these. If you know how to use a web search engine, then you could have

Standards

The open/free standard - http://msdn.microsoft.com/net/ecma/

I intentionally use the words above, because there is No definition of the English language use of the above words that is violated in the way they are used above. If word x means y in a certain political ideal, in my personal sense of ethics, followers of y cannot call those who understand x as x to be non-conformant. Your mileage on that may vary.

 

The standards document – the Common Language Infrastructure – which is to say the way the runtime should work.

Its architecture.

Its file formats

Its API

Its opcode / IL / bytecode – whatever you call it

The C# language.

 

The above are also ISO standards under ISO/IEC 23270 (C#), ISO/IEC 23271 (CLI) and ISO/IEC 23272 (CLI TR).

 

Microsoft does not own or run ECMA or ISO.

 

Patents

About the patents, here is a mail by Miguel of the Mono project.

http://www.mail-archive.com/ilugd@lists.linux-delhi.org/msg05784.html

And look at this

http://samgentile.com/blog/archive/2003/02/19/2647.aspx

 

Implementations

 

Microsoft offered the SSCLI source code

http://msdn.microsoft.com/net/sscli/

Works for BSD, Mac and Windows

The BSD bit patched for Linux is here - http://www.macadamian.com/products/sscli/download.html

These are governed by a non-viral not-for-commercial-use license

http://msdn.microsoft.com/MSDN-FILES/027/002/097/ShSourceCLILicense.htm (print it out, it fits on a page)

 

Mono

http://www.mono-project.com/about/index.html

http://www.mono-project.com/about/faq.html read the faq, before you ‘decipher’

 

 

Maybe I am a fraud who is lying about all of the above. Do you love the .Net technology; do you talk to others about it? Do you write commercial/proprietary software? Maybe you are a liar-fraud too.

 

Btw DO NOT hold this in perspective of my employer or any previous employer or any other context – these are purely my OWN OPINIONS done on my own steam and is not nor ever was, part of any job description of mine. Maybe I am writing this hastily, if I am wrong, I will correct myself. Personally, I have an objection to being called unethical.

 

Monday, November 01, 2004 2:56:05 AM (Eastern Standard Time, UTC-05:00)  #    Comments [28]  | 
  OQO 

I just had to put a link up to this -
http://www.oqo.com/

Worth a look, esp when you look into the specs.

Sunday, October 31, 2004 11:26:09 PM (Eastern Standard Time, UTC-05:00)  #    Comments [222]  | 
 Thursday, October 28, 2004

This is one for the command line geeks – remote.exe.

One of the lesser known (as is everything else command line based in the windows world) console tools that ship with windows is remote.exe. Its not earth shattering, but is a handy useful tool.

 

Remote.exe gives you an ability to connect to a command line program on another machine. What it does is that it can launch a console executable and stream its STDIN and STDOUT over the network to another system. It also can act as a client which can connect to this server session. Simple? It does not work on DOS exes and does not work with apps that manipulate the console via the console API, however it nicely streams standard windows console exes.

It works over a network and works over a modem dial in connection.

 

It’s a little like telnet, but not really. Unlike telnet it can limit the client to the usage of the particular application started by the server.

 

Also, here is a security hitch and a feature – the client that connects to the remote session is not verified (no user name password is asked for) – so virtually anyone can connect. However, when an application is remoted, a session name needs to be specified and the client needs to know the session name to connect to the machine.

 

Here is an example

> remote /S cmd session1

 

This starts cmd as the application that is remoted. The session name is (you guessed it) session1. the person who is connecting to server needs to say

> remote /C <machine name> session1

to connect to session ‘session1’ on the server machine. Neat? The client will have access to a cmd session on the server. The cmd session will be running in the security context of the person who ran the ‘remote.exe’ command (which is to say that the person can do as much good or as much bad as the user on the server machine is authorized to do).

 

Now if you fear the security of this approach here are two simple things to do –

 

The client needs to know the name of the session and cannot establish a connection without that. So your session names act as your first wall of defense. The client however can query a server for active sessions by

> remote /Q <machine name>

You can however choose not expose your session name to this sort of query by using the /-V option.

 

Secondly, if you are under a domain, then you can specify what users/groups are allowed to connect to your session. Simple :-)

 

Now go ahead and try out that remote.exe and play around with your system. It’s tremendously useful in a remote debugging scenario with kd or cdb (not ntsd – remember that opens a different console window). This is a useful tool esp in an intranet environment.

 

Finally, here is a help dump –

>remote

   To Start the SERVER end of REMOTE

   ---------------------------------

   Syntax : REMOTE /S <"Cmd">     <Unique Id> [Param]

   Example1: REMOTE /S "i386kd -v" imbroglio

            To interact with this "Cmd" from some other machine,

            start the client end using:  REMOTE /C <machine name> imbroglio

 

   Example2: REMOTE /S "i386kd -v" "name with spaces"

            start the client end using:  REMOTE /C <machine name> "name with spaces"

 

   To Exit: @K

   [Param]: /F  <Foreground color eg yellow, black..>

   [Param]: /B  <Background color eg lblue, white..>

   [Param]: /U  username or groupname

                specifies which users or groups may connect

                may be specified more than once, e.g

                /U user1 /U group2 /U user2

   [Param]: /UD username or groupname

                specifically denies access to that user or group

   [Param]: /V  Makes this session visible to remote /Q

   [Param]: /-V Hides this session from remote /q (invisible)

                By default, if "Cmd" looks like a debugger,

                the session is visible, otherwise not

 

 

   To Start the CLIENT end of REMOTE

   ---------------------------------

   Syntax : REMOTE /C <ServerName> "<Unique Id>" [Param]

   Example1: REMOTE /C <machine name> imbroglio

            This would connect to a server session on <machine name> with Id

            "imbroglio" if there is a REMOTE /S <"Cmd"> imbroglio

            running on <machine name>.

 

   Example2: REMOTE /C <machine name> "name with spaces"

            This would connect to a server session on <machine name> with Id

            "name with spaces" if there is a REMOTE /S <"Cmd"> "name with spaces"

            running on <machine name>.

 

   To Exit: @Q (Leaves the Remote Server Running)

   [Param]: /L <# of Lines to Get>

   [Param]: /F <Foreground color eg blue, lred..>

   [Param]: /K <Set keywords and colors from file>

   [Param]: /B <Background color eg cyan, lwhite..>

 

   Keywords And Colors File Format

   -------------------------------

   <KEYWORDs - CASE INSENSITIVE>

   <FOREGROUND>[, <BACKGROUND>]

   ...

   EX:

       ERROR

       black, lred

       WARNING

       lblue

       COLOR THIS LINE

       lgreen

 

   To Query the visible sessions on a server

   -----------------------------------------

   Syntax:  REMOTE /Q <machine name>

            This would retrieve the available <Unique Id>s

            visible connections on the computer named <machine name>.

 

Thursday, October 28, 2004 2:27:42 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, October 27, 2004

MSDN Mag

Some things to say – the MSDN magazine has hit news stands in India, that too at an affordable price of 60 rupees a copy. Worth taking a look. Most people simply don’t even know about MSDN mag, so take a look here to get an idea of what it is like:

http://msdn.microsoft.com/msdnmag/

Additionally this is an India edition of the magazine so it has some information about the folk you should be getting in touch with in India, articles from some folk here and the community effort and such, in addition to the regular technical content.

 

Email

A friend forwarded this mail to me and it felt so 1984 like.

> -------- Original Message --------

> Subject: [Fsf-friends] Re: DotNet

> Date: Wed, 27 Oct 2004 06:48:28 -0400

> From: Richard Stallman

> Reply-To: rms@gnu.org

>

>  >Re the request by Microsoft to speak at the Hyderabad usergroup on

> >DotNet,

>

> I am not sure what the "Hyderabad usergroup" means, but anyone who

> advocates freedom should not offer a proprietary software developer a

> platform to present a practical discussion of a proprietary software

> product.

>

> Such discussion focuses on the practical characteristics of the

> software, and therefore makes the implicit assertion that, "There is

> no ethical issue with this software, therefore the interesting things

> about it are its technical capabilities and merits/demerits."  We need

> to reject that assumption, and the best way is not to offer them a

> platform at all.

The context here is that someone at MS offered to speak the local Linux UG at Hyderabad. I don’t know why I bother so much. Somewhere my personal definition of freedom made it a superset of choice.

 

(more) 1984

Speaking of 1984 and I am taking the risk of being politically incorrect here, but someone forwarded this to me: http://observer.guardian.co.uk/magazine/story/0,11913,1323246,00.html

I feel sorry for these people. I personally strongly feel against wrong like this.

 

CEC

Just giving an early heads up to folk who are watching – this is going to be an interesting thing in the future. Something that is going to form the basis of compelling and winning arguments – Microsoft Common Engineering Criteria.

Common Engineering Criteria

While every component of Windows Server System is already very good on its own, they can be better still, both as individual products and as part of an integrated system. Microsoft is establishing a common set of guidelines and requirements that each server must meet. Starting with the Windows Server System product releases for 2005, Microsoft is increasing its focus on improving the servers with common engineering criteria, with a goal of eventually delivering a unified group of products that provide what customers really need to simplify their IT environment.

http://www.microsoft.com/windowsserversystem/overview/commoncriteria.mspx

To throw some ideas in, think of WMI and then think of Monad and then think of WSH and then think of CEC and then use your imagination.

 

Exec Mail from SteveB

This was just released -

Customer Focus: Comparing Windows with Linux and UNIX

http://www.microsoft.com/mscorp/execmail/2004/10-27platformvalue.asp

 

 

 

Wednesday, October 27, 2004 9:06:48 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Monday, October 18, 2004

I got to meet vice presidents S Somasegar and Eric Rudder yesterday. They were at IDC as part of an exec visit to India. Eric struck me as a thoughtful and intelligent person. He was technical advisor to BillG for a while, so that’s saying a lot.

 

While a lot of things cannot be discussed in a public blog, I do like the way Eric responded to one of the questions during the open forum. This question was related to losing market place in the very small business and personal use scenarios due to the often posed ‘good enough’ argument against commercial software. Among other things, Eric said that if ‘good enough’ is good enough, then we deserve to lose.

That’s taking on a much larger commitment that just saying that we will make good products and sell them, I think that that’s saying that in time the quality of what we can do will change what good enough means. That’s a measure of a company and will unlike most others ‘big’ guys in this line.

 

I also spend part of yesterday thinking about the ‘ethical’ argument with which non-commercial software tends to propagate and justify itself. I remember receiving lots of feedback on my talk about the commercial software model at the first anniversary of the Bangalore .net user group.

 

Not a lot, but a significant amount has been said from the perspective of commercial software.

http://www.microsoft.com/resources/sharedsource/Initiative/speeches/mundie_model.mspx

In general look here from time to time, some of it might seem to be a revelation -

http://www.microsoft.com/resources/sharedsource/

This is also an interesting book, with names like Lawrence Lessig an Bradford Smith in there -

http://www.aei.brookings.org/publications/abstract.php?pid=296

 

Also I realized something else, it’s probably an obvious little thing – but a lot of what you hear when you are outside Microsoft, sounds like science fiction: Avalon, Indigo, WinFS … ta da da. I now have having a weird feeling of ‘coming in touch’ right now, because I am downloading one of the builds of one of these pieces to try on my machine – the sort of thing I would not have seen for years otherwise, and it feels good. It also feels like a ghost stepped out of the shadows and then you realize that he was real all along.

 

I know this blog entry is all pithy stuff with no enumerations of ‘facts’; but that’s ok, for this one. I know it will not stand one of my ‘where are your facts?’ rants. But again, that’s ok for this one.

 

Monday, October 18, 2004 5:38:26 AM (Eastern Standard Time, UTC-05:00)  #    Comments [8]  |