Kicking myself…

Manchester United (Premier League, England) versus Celtic (Premier League, Scotland) at the Seattle Mariners Stadium tonight. Tickets at $45, I am not there!!!! Arggghhhhh!

Chased a bug for two days, lots of red herrings appeared, learnt a lot too… still figuring out how the system works. I hope I keep the lessons learnt and improve.

The Irony…

In the past week tech news has confirmed what everyone in the world of programming has feared. Programming is now a commodity and not an art only for those gifted in math and logic. Last week, Microsoft announced that it was moving 800 jobs to India, Yahoo announced that it would shift it’s entire research and development wing to Bangalore, India. Finally, IBM joined in the fray and announced it was moving jobs over to India slowly and steadily to as many as 60,000.

This brought on an entire wave of paranoia in the development community at large in the USA. Suddenly, everyone is comparing the entire direction the tech industry is taking to that of sweatshops. As always, the news brought out the best in some developers and the worst in others. One comment on Slashdot pointed out that it was inevitable that this should happen and that the USA should (and will) stay ahead through innovation and true high tech. On the other hand, others blew their lid off at how so many GA’s/TA’s were from India at US Universities and how the US tax-payers were footing the bill to educate the developers who were finally taking away the jobs too (What about the Kalpana Chawlas I would have asked, but I wanted to moderate the discussion :S not participate).

The facts are of course, that the Indians are doing a good job in the area of development. There is also the immense savings. On average, an Indian with 2 years of solid professional experience will get around $8000 a year, while the same kind of experience here demands several 10’s of thousands in US Dollars.

It’s true that the american way of life costs, but it also demands innovation. The circumstances bring out this truth in the open, assuming of course that the sweatshop trend will settle in. At around the middle of year 2002, when things began to go really sour, lots of Indians predicted this, saying that the crunch on finance in the high-tech industry would result in a trend of this sort. However, the current movements are not a result of just sorry finances, we are talking major high-tech firms affirming their faith in the Indian Tech Industry.

Strangely, it also brought out good humour, someone asked, why not out source management too? Someone else pointed out that now Americans could migrate to India and open convenience stores for the Indian programmers 🙂 of course don’t be surprised if they make fun of your american accent ;). To apprise them, we don’t have convenience stores, well not many really. We do have kirane wallahs and as the people of Lullanagar and Aundh will point out, that has been out-sourced to the Biharis already.

I believe that the future holds prosperity for the Indian tech. Industry. I just pray we don’t get too caught up with the business of tailing when we can lead eventually. I want to be surprised when I say that the best innovation can come from us too.

My sup. in Persistent once said, as long as Indians are there in tech, quality will remain absent… “Chalta Hai” !! This is an opportunity to prove otherwise…

Have you seen it yet?

It defies constitution. You may have had many long and arduous journeys, but nothing like this one. The one that you’re taking right now, it defies analogies and it evades description. A poor writer can only but hope that his honest attempt to capture the underlying patterns in the interweaved fabric of life.

Born on a certain day, so everyone else claims. One has memories of that particular day sometimes, memories of other days follows. They are few and far apart. Almost always the sneaking suspicion enters your mind that these memories are just faked, built by your mind to explain the stories those elder and close to you will tell. But happily you will hold them close to your heart. Looking at other children, you can tell one thing, they were blissful and happy.

Awareness begins to grow, innocence remains. Hard memories begin to form and inspirations take hold. This is the age where experiences tend to overawe and yet pleasures are still simple, a very desirable combination. When looking down into a flowing river, you watch your reflection wondering about things and not noticing the tremendous youth that creates the image. Time may fly, but your heart does not care… in fact when you look back it almost always seems as if time did fly! The growing awareness of oneself also results in the formation of envy and greed.

It is around this time that the simplest things matter the most, that bird you saw hurt in your backyard, or losing a friend early and to bizarre circumstances. Things might start making sense, but you couldn’t care less… there is a growing realization of bonds that can be built with others. Maybe a slight weakening of existing bonds, especially with parents, who teach discipline and spell out the straight and narrow.

School enters life, bringing with it an infestation of complexities. If the truth lies in education, its also education that encourages the neverending search for truth. It’s here that many learn about choices, the choice to work hard, work earnestly, the choice of building a character with the blocks provided or the choice of starting from scratch and visibly rebelling! All this must happen naturally and with the flow of things. You learn routines and schedules. You learn others’ interests and acheivements trying to understand what it is that you’re here on earth for.

Your much more deviant now… the questioning begins, why do it this way, is it because I see everyone else do it this way…? Unconsciously  we assimilate certain habits, others we don’t. Trudging through the whole mess of things, you must lead two lives, one where time is yours to kill and spend. The other where you must devote yourself to the formation of that whose end you cannot see. While genius must blend or pretend as the situation might demand, most find a pretty tough fight and must see themselves through.

The memories that are left behind are some of the sweetest or some of the bitterest, but it almost seems as if it were a train ride. A controlled environment to look out from, it is beautiful outside, you can see… but you must stay inside. The speed at which you travel is tremendous, in the end leaving behind just those frames that had something important to offer, maybe a very deep red gorge with craggy peaks and a scary drop ,or an awe-inspiring, proud mountain with a snow capped peak dominating from the distance.

Things start to grow confusing as awareness is almost complete. Morals must receive a deep shock, the terrain begins to change. The peaks and valleys are exciting, now that you are able to descend and climb them. But you don’t know what to make of the excitement. You are in control now, you tell yourself. But the frames of others in your mind prick when you think you might have done something wrong. Get rid of it and life is beautiful, ready to let go of all of it’s secrets. All reach for them, some times you get hurt, some times it’s worth it.

It’s around now that bonds grow the strongest, others grow on you. Reliability, trustworthiness and compatibility, you can pin them down and describe them… often a friend is enough, for others many is fine! You think you’re seeing straight but smirkingly realize you’re intoxicated with life. A job, maybe a car, material pleasures create space for themselves in you mind. Your heart has very little to say! Letting go is as easy as visiting the next watering hole with the stranger you met last Friday.

Achievements for you are now quantitative and not qualitative, the zen you might have brought to balance your two lives disappears  You are working harder/longer or just the opposite. For those in the city, destruction approaches faster.

You’re seeing personality types now, the mentor, who tries to show you where he has been and where you’re headed. The laggard, who failed to keep up on the oft trodden path, some still happy some aren’t so much, some having defined their own lives with the diligence and guile of their own efforts. Others having messed up again due to their own actions. The conman, the fellow who assumes you’re still to naive and tries to cloud your vision. Then there is the wannabe mentor. Often you are right, sometimes you are wrong. The followers, those who struggle with earlier phases and are desperately looking for a way out. Your peers, some in a struggle with you, others whose personal struggles you acknowledge. Finally, friends and family for whom you allocate a strong static block. Inspirations remain and you yearn to bridge the gap.

Life’s speed upto here has to be appreciated, You’ve hit 25 and I don’t know the what or how yet of why things are the way they are… maybe you’re looking for ways to slow it down, maybe you’re still burning out. Maybe you realize there are so many questions that it makes you comfortably numb* not to have that fever anymore to uncover the truth. Instead you settle for regularity and prepare for the rest. Or build mental challenges that define your place in the race. The child is gone*, maybe to return. Who can tell? I certainly can’t.

Eric Cartman

Eric Cartman:

“First Rule of Fight Club, you pay me $10 million dollars”

“Hippies, hippies… they want to save the world but all they do is smoke pot and play frisbee!”

“I am not Fat, I’m just big-boned!!”

“Oh, oh, Jesus. I was here laughing so hard, that the milk comes out of your nose. Oh, oh, man”


“Wait a minute… maybe that was a sign from God.. That’s it isn’t it?! You want
me to start a boy band so I can make ten million dollars, don’t you?! THAT’s IT!!”

“Cartman: Kyle, all those times I said you were a dumb, stupid Jew, well, I was
wrong, you’re not a Jew. Kyle: Cartman, I *am* Jewish! Cartman: There, there,
don’t be hard on yourself, Kyle.”

Are CS folks Mathematicians

> Since CS is (or at least should be) learning how to apply known algorithms to problems and the development of new algorithms to solve problems, CS should be very similar to math, and computer scientists ought to seem fairly similar to mathematicians.

For researchers in the ‘theory’ and ‘algorithms’ sub-fields of CS, I’d say they are mathematicians. They work with axioms and theorems and stuff just like other mathematicians do.

Other CS researchers are empiricists instead, e.g. most of those who do data mining or statistical natural language processing. And of course there’s lots of other stuff in between. (E.g., network researchers may start off with an algorithmic concept but then run simulations to demonstrate their algorithm’s effectiveness.)

There’s a family of jokes to the effect that PhDs in computer science don’t know anything about computers or programming or whatever. In actuality the individual’s engagement with computers/programming will vary very much with the sub-field he’s in. These days a theorist will need to be able to use LaTeX to write papers and read e-mail to see the conference announcements, but doesn’t need to program at all. OTOH someone doing experiments with genetic algorithms will probably write their own code for their experiments, and may even turn into a hardware geek by building beowulf clusters to run the massively CPU-intensive experiments on.

> Most early CS people, as I understand it, were math people with an interest in computers.

I think you can still find a lot of older CS professors with degrees in applied mathematics. Computers were around long before CS departments even existed.

“It has become very very clear that this war isn’t over.” — British officer in Iraq, June 24 2003

.Net on Slashdot

Comments I found useful on Slashdot, hey sorry If I am breaking any laws!! I understand these are public anyway!

NET = Windows API 2.0 (Score:5, Informative)
by Anonymous Coward on Tuesday July 08, @09:14AM (#6390308)
.NET has little to do with anything .NET. It’s a new Windows API designed to turn Windows into a virtual machine like Java so it can be architecture independent. That’s what CLR and C# and all the rest of that stuff is about. It’s about MS getting off x86-32 and into a larger world of ia64, amd64, and maybe even ppc64. CLR is the new Windows runtime. Once the move is complete, Windows will be able to run on anything and apps will not have to be recompiled at all. This will make Windows more portable than *nix.

Heck no they shouldn’t be moving on…. (Score:5, Interesting)
by Asprin (545477) on Tuesday July 08, @09:39AM (#6390600)
( | Last Journal: Thursday July 03, @08:39AM)

There are some compelling advantages to .NET — REAL compelling advantages. The thing is that it’s takes a boatload of time for a new development platform to get to the mainstream: You’re looking at two or three years to get the developers comfortable enough to start working with it, then another two or three years to get their apps ported over and another year or two to roll those out to customers.

I figure we should start seeing real concrete examples of the advantages of .NET in, like 2005-06.

Don’t believe me?


Or even better, how about Win32? We *still* have at least two industry-specific Win16 apps that are under a current maintenance contract. Hell, most of the non-MSOffice Win16 crap was just replaced around four years ago with the Y2K upgrades, so we’re still in the process of depreciating it!

All of MS’s apps will be .NET in November, but contrary to what the open source community believes, MS Office will only get you so far — it is by far not the most important piece of software we run. The developers are the key, and MS understands this. You need to get **THEM** interested in developing on a new platform (.NET, MONO, Java, LAMP, ELF or whatever) about five years before you want anything to happen.

“Lawyers are for sucks.”
– Doug McKenzie

Three years in and I believe it is fair to say that most people do not understand exactly what .Net is — other than a vague “trust me” monolithic solution.
No matter what the MS-bootlickers say, .NET can be summed up easily:

.NET is like Java, only incompatible with everything other than Windows. The only added feature is language-neutrality (you can use more than just C# to code .NET objects) although that exists under Java, too, although to a lesser extent (There are many compilers that take many non-Java programming languages as imput and put out Java bytecode, however those are not very widely used and supported)

To sum up, there isn’t a real reason to use .NET over Java. The Microsofties who have overrun Slashdot already will crucify me for doubting the invincibility of Microsoft, but Java is *the* standard programming language, and the only language that runs on every major and most minor platforms.

75% of webservers don’t run Windows. 100% of cellphones don’t run Windows. 60% of PDAs don’t run Windows. Let’s face it: .NET is just a desktop solution, nothing more.

Using .NET and artificially chaining yourself to one vendor and platform and shrinking your target market is a stupid idea.

What .Net REALLY is (Score:4, Insightful)
by Trolling4Dollars (627073) on Tuesday July 08, @09:49AM (#6390695)
(Last Journal: Wednesday July 02, @04:19PM)
To misquote David Byrne, its, “…same as it ever was…”

Microsoft is simply taking what they already have and making some changes in the way these components work together and within the context of the internet. The end result should be a computing experience that is fairly smooth to the end user and provides a lot of what’s already out there but with different names and faces. This is why they claim to “innovate”. Innovation is taking existing “stuff” and using it in new ways. That’s not exactly what they do though. Instead they take existing stuff and use it in the same ways they are already used but call them something else.


In UNIX we have daemons
In Windows they have “Services”

This provides enough of a distinction that the less technically inclined person is going to thing Services are somehow different. But they are really no more than daemons or backgrounded apps.

In X Window System we have “Window Managers”
In Windows XP they have the “Theme Service”

Don’t believe me? Go stop the theme service in XP and tell me what changes. Just the Window widgets and borders and the look and feel of the Start bar.

In UNIX we have “mount points” for file systems.
In Windows 2000/XP they have the ability to mount a drive in an empty NTFS folder.

Microsoft is very good at taking these existing concepts, renaming them and then claiming them as their own innovations even though they haven’t changed how the technologies are actually used. They’ve only renamed them. .Net is no different. It will be internet services integrated into the OS with all the “new security” that Palladium will bring and a big happy Microsoft smiley face on the front.

Unix = Here’s the internet. Go learn some stuff and have fun.

Microsoft = Here’s .Net. It’s all ready to go… have fun! :)))

Personally I prefer the Unix approach, but that’s just me.

Oh, I almost forgot:

In Soviet Russia we only had two TV channels. Channel One was pro da. Channel Two consisted of a KGB officer telling you: Turn back at once to Channel One.

— Yakov Smirnoff

Unraveling a long weekend

July the 4th weekend unravels slowly. Not surprisingly, the world’s greatest nation is responsible for giving independance to other’s, while the other’s are responsible for the demise of their own structure and order.

In the movie “Das Boot”, the true heroes of Germany are bitter about the increasing stupidity of Hitlers Nazi government. This is more or less an empty observation, but I must ask, who are the true heroes today everyone must look to for the boldened truth? There exist flaws in every goverments structure and as someone aptly pointed out this nations government too has flaws. Toeing the line from “Bowling for Columbine”, ownership of guns is encouraged in the United States to ensure the likelihood of a Civil War in the case of a corrupt vicious regime attempting to surpress the concept of liberties and freedom in the United States. The obvious conclusion that one must draw is that this provision is basically empty and in today’s reality it has no value. This is especially true when you see your roommate showing off his $2000 rifle which he used to knock dead stray animals weeks ago.

So it is left to the intellectuals and the college-goers to step up and make these obvious observations. But the system here works to the extent that these unlikely heroes are able to step forth and point out, “hey, you know what this no longer makes any sense”. Myself on the other hand, am forced to acknowledge that some of the laws at home don’t make sense and will never change in the near future. It’s true that there is tremendous resistance here to changing legislation in the United States, but the truth is changing legislation sensibly is almost an unheard of concept at home. Well almost!

Visitor Design Pattern

Todays chautauqua:
The Visitor Design Pattern is applicable in conditions wherever a clear seperation of the algorithm and the data structure is necessary! For example, the quiotix HTMLScrubber allows developers to extend the basic parser and instead implement algorithms that work on the HTML document. To be more specific, the algorithm is *visited* by the HTML document :).

C/C++ is no longer a viable development language

Came across this page through Slashdot today, I don’t agree with the comments on the page but a lot of the slashdotters anyway went after the poor fellow!!

Story was just released to subscribers and already it’s loading slow so here’s the article text for when the inevitable /. effect comes:

Peekabooty � Lessons Learned

By Paul Baranowski (

July 1st 2003

Here is a review of the first two years of the Peekabooty Project. Over that time I have had to re-evaluate many of the things I learned in university and in the working world � many of the engineering lessons that I had been taught turned out not to work so well. The project management of an open source project is very different from old-school engineering project management, so I had to learn a lot about how open source project management works.

All of these problems have been seen before � by no means do I see these as unique. They are simply more data points on the �How To Do Open Source Development� graph.

What did I learn from the first version of Peekabooty?

Open-Source Project Management Lessons

Don�t release before it does something useful.
This lesson is recounted in Open Sources: Voices from the Open Source Revolution as well as other places. I had even read about this rule before we released, but I had to learn it for myself. If you release too soon, you spend a lot of your time answering emails instead of developing.

The press is a tool � more like a hammer than a Swiss army knife.
The press is like a hammer � it can help you or hurt you, depending on how you use it. But like a hammer, it can�t do everything, like cut a tree in half. It has limited capabilities and you cannot expect too much from it.

How the Press has Helped

� The press has helped to bring awareness to key people that have the ability to help the project grow.

� Press will get you more downloads. Whether this is good or bad depends on lesson #1.

Press will not get you more developers unless #1 is in place. The fastest way to get more developers is to network with other developers.

How the Press Has Hurt

The press loves infighting because it�s a good story. However, the infighting story is bad for a project that is trying to get funding. This creates an air of instability. People only like to fund things they feel will have a high chance of success, and instability erodes that confidence.

95-5 Rule
Usually it�s the 80-20 rule, but in open source projects it�s more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this. If you want to lead an open-source project, it helps to be independently wealthy. This allows you to forget about things like a job and work on the project you want to work on. In hindsight, wouldn�t it have been better to take a really long vacation instead? Doh!

Engineering Lessons

C/C++ is no longer a viable development language
This may seem obvious to some people, and other people may recoil in shock. In college/grad school we were taught to believe that C/C++/Java, etc are the best languages in the world, so it was a very difficult transformation to accept that these languages are not viable development languages for application level work.

C++ is seen to be great for execution speed, static binding, object orientation, templates, and more. However, it is absolutely lousy for development time. Here�s why:

� It requires compilation � as your code grows larger, the wait time to see if your code works increases. This delay directly affects how fast your code is developed.

� It�s really, really, really hard for people to learn it, and this directly impacts the number of developers you will have on an open-source project.

� It uses static binding (Isn�t that supposed to be a good thing?)

� There are no standard libraries for C++, so there�s a lot of reinventing the wheel. (Yeah, there�s the STL and others, but each one has a huge learning curve associated with it).

Java somewhat fixes the learning curve and the standard library problem, but still has the other two problems, and in addition requires the user to download the JRE before you can run any java program (a 25 MB separate install). One of my previous jobs had us trying to deploy a client-side Java program to much failure because of this hurdle. Server-side programming doesn�t have this problem so Java may not be such a bad choice for that.

Don�t Use Binary Protocols for Application Development
In grad school we spent a lot of time analyzing network protocols, network optimization, etc. A binary protocol may be good for core protocols of the Internet, but they are not a good choice for an application. Once again, this may seem obvious to some, and others may stop reading at this point in disgust. Here�s why binary protocols were no good for this project:

You waste too much time figuring out 1�s and 0�s instead of adding features.
You make it very difficult for others to write their own clients

Interface is Everything
This is similar to the #1 project management lesson. The program should be fun to work with. There should be buttons and things that blink. The interface should be the first thing you do. The interface serves as inspiration and motivation and helps you to learn how the final product should look. Yes, it�s going to change a lot. Yes, it�s going to have to be rewritten multiple times. Yes, it will never be good enough. Yes, it produces a never-ending list of additions and features to your already huge TODO list. But when someone downloads your program they will have something to do. No one likes to look at command lines.

These were the main lessons learned in the first two years of the Peekabooty project. The new roadmap to the future of Peekabooty will take these lessons into account. That future will be released in the coming weeks.

I have often regretted my speech, never my silence.

Some other comments:
Re:I think not (Score:4, Insightful)
by GlassHeart (579618) on Wednesday July 02, @04:46PM (#6352882)
A few other points in defense of older languages:

* An older language has had more lines of code written for it, so its weaknesses are better known, and more likely published.
* An older language tends to have more developers, which means any random volunteer is more likely to know it already.
* An older language has already fought “battles” for survival, and has been squeezed out of applications for which it is ill-suited, and continues to exist for a good Darwinian reason.
* An older language is more likely to be standardized, and more widely ported.

Let’s take C, for example. An experienced C programmer will point you towards two or three books like van der Linden’s “Expert C Programming: Deep C Secrets”, or Koenig’s “C Traps and Pitfalls”. C is rarely used for GUI application development, but still widely used in embedded systems where space and speed are important. C is an ISO Standard, which is important for portability.

One mistake that many people make is to dismiss older languages when a new one appears with all the old features and then some. The old language does not become any less viable the day a new one comes out than the day before. That is, if a project will take you 6 months in C, it’ll still take 6 months even after Java (which might cut it down to 5) comes out. The question is whether the unique costs of using Java instead justifies the 1 month saved, not whether C is still “viable”.

95-5 Rule (Score:3, Interesting)
by jmacgill (547996) on Wednesday July 02, @04:55PM (#6352999)
Usually it�s the 80-20 rule, but in open source projects it�s more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this.

Actualy, if you are about to set out on a new project, its probably best to tell yourself that you are NOT willing and ready to accept this.

6 years ago I started a project called GeoTools and it was, for the main part, excactly that – two people doing most of the work. This was fine for a few years but over time the user/developer ratio got out of hand.

Eventualy it became all but impossible for the two lead developers to support 300+ users and although other developers wanted to contribute it became dificult to ‘train’ new developers as the knowledge of how things worked existed mainly in the heads of only two individuals who had done 95% of the work.

Two years ago we took the descision to re-design the toolkit from the ground up with as much input from as many people as possible. Since that time we have strived to make sure that as many people as possible have an input into the design process and we keep that process as open as possible by pubishing the IRC sessions in which discussions take place.

The project now has 9 very active developers who are members of a Project Management Committe and a number of other active contributers as well. The end result is that quiries to mailing lists get responded to far more quickly.

Getting other people to work on your project is often – TO START WITH – more effort than just doing the work yourself, but the pay off is HUGE, as you then have someone else who can explain things to others.

If you ever have a contributor who gets stuck or confused and you find yourself thinking ‘oh, it will be quicker/easier for me to do this part myself’ STOP. Spend the time, help them work out how to do the modification even if it takes a few hours when you could have done it yourself in minutes becuase after you have invested the time in them, they will be able to add things in minutes too, and they can teach others as well.

If you work on a tight, well defined, non-evolving project then most of my ramblings are probably irelelevent if not they they may be of use. The only danger is in investing time in helping developers who then wander off – it happens, but I tend to find that the more you invest in them, the less likely they are to loose intrest.
Spell checker (c) creative spelling inc. (aka my dyslexic brain)

Not Project Management (Score:3, Insightful)
by drmofe (523606) on Wednesday July 02, @05:04PM (#6353111)

None of the lessons learned and reported here are directly related to Project Management per se. They are all by and large implementation issues.

There is also nothing new here. This does not advance the state of the art. History does not advance by people relearning the same lessons again and again. Just because they have been reported here does not make this article special in any way. This article could have been written in any of the decades of 70s, 80s, 90s (substituting en vogue languages for C++/Java) and still make sense.

In order to truly advance the state of the art, we have to think in far more advanced ways about project management and software development. True Software Practice and Experience requires much more planning and critical thinking than evident here.

If Open Source is to provide a useful and stable platform on which to build, then we certainly need a better vision of how to build software. Otherwise, we will be doomed to repeat history by implementing old things in different ways and not really gaining any control over complexity.

In summary, we still have a software crisis; Open Source will not change that; and summaries of software development experience that just say “I made the same mistakes as other people did” are not very helpful.