Friday, September 23, 2005

Predicting the Future: Linux vs. Windows

I wrote Predicting the future: Google vs. Microsoft a few days ago and I enjoyed that exercise enough to try again with Linux vs. Windows.

I have been using Linux since downloading the core of Slackware using a 2400 baud modem and I wrote a commercial application for Windows 1.0. Unlike a lot of Linux enthusiasts, I am fairly happy with Windows dominance in the non-technical world: this makes Windows more of a target for virus attacks, trojans, etc. and makes using Linux and OS X safer. I once spent the weekend at a friend's house and Microsoft's .Net project manager was also there with his family. He told me that I was not Microsoft's target customer - and that suits me fine. I do wish that Microsoft would do the world a favor and support open file formats, but that is their bad.

Windows: Although I believe that Microsoft's desktop dominance and financial position will take a long slow slide down hill, they will be around for a long time. I think that Microsoft's future lies in the idea of charging customers a yearly fee per PC for software use in order to provide a continual revenue source without having to spoil the quality of their products with gratuitous changes in order to get people to upgrade.

This is the scenario that I would like to see: I have two PCs that I dual boot between Linux and Windows. I would prefer to pay Microsoft a (hopefully) small fee per PC per year to get security updates and hopefully rare functionality modifications. This subscription model would allow Microsoft to concentrate on quality and not on new features that a lot of people don't really care about. I would consider a $25/year fee for each of my PCs reasonable. If you buy a new PC, the PC manufacturer would pay the first year fee for you (actually you are paying via a higher purchase price). For individuals who need Microsoft office, I would think that a $50/year fee would be reasonable. I would expect Microsoft to give corporate customers a discount. I would also expect Microsoft to put more effort into making company wide deployment and maintenance of their software products less expensive in IT staff resources.

Linux: I think that the use of Linux will continue to increase in business with a much slower growth in the home desktop market. I think that professional maintenance and work on Linux will continue: large corporations will donate people out of self interest and home/small business Linux users like myself will continue making small financial donations to Debian, Ubuntu, etc. to support continued high quality distributions and improvements. I expect to see Linux Desktop use to continue to cluster more around both Gnome and KDE; alternative desktops will mostly be used for hobbiest or emotional reasons. While the competition between Gnnome and KDE is healthy, I expect to see more distributions smoothly supporting running KDE applications under Gnome, and vice versa.

I think that it will be a long time before Linux scales up to massively SMP servers like Solaris, AIX, etc. I think that for most web based applications running Linux on inexpensive yet fairly reliable hardware will continue dominate the low and middle parts of the server market, slowly but surely increasing market share.

Wednesday, September 21, 2005

Predicting the future: Google vs. Microsoft

One of my customers just asked me what my take is on the future competition between Google and Microsoft. I will start with where I think that each company will be in 5 years:

Microsoft: I think that Microsoft will have limited success in newer markets like music players, gaming consoles, etc. In 5 years, I think that Office and Windows will still be their cash cows. I think that Microsoft's stock price will take a modest hit in the next 5 years, but they will still have huge cash resources.

Google: I think that Google will still be doing well in 5 years, but their stock price will probably come down a bit. Google's advantage is their infrastructure: a scalable platform that lets them relatively easily experiment with new very large scale web applications. Google File System and their map reduce libraries are great technologies. Their architecture scales much better than, for example, Oracle on Unix super servers.

Future of economy: this is the potential spoiler for any predictions that I am making. While the U.S. economy has a lot going for it, it is also subject to some serious threats from the housing and consumer credit bubbles. The "sea change" in our political system (i.e., the total domination of Congress, courts, etc. in the last 10 years or so by our new Corporate Overlords) will probably be OK for the economy as a whole, but say goodbye to much of the middle class: if you want to be OK financially, make sure that whatever you do that you are very, very good at it. The question is not if the U.S. economy is going to tank. Rather the questions are when it will happen, how bad it will be, and will we fully recover in a few years, 20 years, or never. My bet is that the economy will sink slowly rather than an absolute crash (yes, call me an optimist). In any case, the middle class will largely go away, transitioning into an "upper lower class" that still has some qualiy of life, but will struggle under huge debt loads, etc.

Google vs. Microsoft: Microsoft was in the right place at the right time in technology and economic history. They got lucky. Google on the other hand gained market dominance against existing market leaders. This difference, along with their flexible and scalable architectue for large scale web applications, is why I expect Google to improve their position in time while Microsoft is probably looking at a long (very) slow slide downhill.

Sunday, September 18, 2005

Reading code and tech papers

People get very good at games like chess and Go by studying master games. Software design and coding is similar in that we learn patterns and new ways of approaching problems.

I really enjoyed reading the paper on Google's map reduce library this morning. A great way to increase programmer productivity by abstracting away details of handling huge data tuple sets. The paper is detailed enough to make me feel like I could implement their ideas (given the Google file system infrastructure).

While good technical papers make us better at strategy (to keep up the chess and Go metaphor), reading other people's code helps develop good tactics.

Better power management under Linux than Windows XP

I have a Averatec laptop that I dual boot. I get better power management under Ubuntu Linux than I do under Windows XP - with similar 'power saving' settings. I am almost sure that this is because there are fewer memory and CPU hungry processes running under Linux. So, when I am reading online, under Linux it is easier to shut down the disk and fan because everything runs in memory and the CPU is largely idle.

Speaking of Windows XP, although in some instances it is a good OS for coding, it always makes me a little uncomfortable having so much stuff installed by default. Although I wrote a commercial Windows product (SAIC ANSim) using Windows 1.0 beta and delivered on Windows 1.0 and 1.03, Windows NT was the first version of Windows that I liked. I had a "secret" for using Windows NT effectively: I had one boot partition that was totally stripped of everything but my software development tools and another that I would load a bunch of junk on - the trimmed down version with no spurious applications installed was incredibly stable. I have thought of doing the same thing for Windows XP but I don't think that XP's copy protection would let me do this.

I used to use a shared FAT32 partition to share design artifacts and source code between dual booted operating systems, but now it is just so much easier to keep everything in a CVS repository on a server. As I mentioned the other day, this makes it easy to use Windows Linux, or OS X for a task, picking the best platform per job.

Saturday, September 17, 2005

Automating development tasks ...

... is so important! I am going through a tedius process today of getting some of my compiled Java code deployed on a customer's little hardware device. (No, Java is not always portable, but that is OK).

I thought that deploying and testing would only be a few hours work (ha!) but I took the time to automate a compile, package, transfer and burn to device script. This was ugly because I have to work on Windows because of required utilites, so I had to use .bat files.

Anyway, in addition to saving time in the long run, a really good automated system is making this process more fun. I have now gone through about 4 iterations of automating this process, and it is time well spent.

Tuesday, September 13, 2005

Matter of attitude: switching between Windows, Linux, and OS X

Java may be portable, but I still feel the need (and enjoy) switching between Windows, Linux, and OS X as per the requirements of work and research. For Java, I like to customize applications (if they are JFC based) to use tray icons under Windows and support the Mac top of the screen menus under OS X.

There are other good reasons for keeping an open mind to which computer to boot to best get the job done. If I want to use Common Lisp, I find it easiest to run Linux + Emacs + SLIME + SBCL (although I own LispWorks licenses for all three platforms, so I sometimes use LispWorks). For reasons that are not totally clear to me, when I code Ruby and/or Ruby on Rails, I like OS X.

When I am working on a huge Java web framework for one of my customers, I like Windows because of the total "niceness" of using ant build files in TextPad shells.

Anyway, years ago, it used to bug me to have to reboot between Windows NT (and later 2000) and Linux. Now, if I want/need to run under a particular operating system for a few hours, the overhead of switching seems really light and I do not mind doing it.

A few things make it easier to switch (rapidly) between operating systems:
  • Use source code control (either CVS or subversion) for everything - then a fast CVS update gets a development machine current in a few seconds.
  • I mostly use GMail so no more hassles keeping email straight on multiple development systems (my local ISP still does not support IMAP).

Wednesday, September 07, 2005

Where is Apple's iPod/cellphone?

Rumors were of an announcement yesterday. I am just about the only person I know who does not own a cellphone: when I am in my home office working I am (and I should be) instantly available to my customers, family, and friends. However when I am out of the house, I would find it an annoyance to even receive messages - that is my time off. If I am wilderness hiking I will occasionally borrow my wife's cellphone in case of an emergency but I keep it switched off.

I think that I will get Apple's combo iPod/cellphone if they do bring it to market. My MP3 player is over 5 years old and only stores about 80 minutes of music. Also, I can leave the cellphone turned off.

Tuesday, September 06, 2005

That does it - I am going to sell my Microsoft stock

I believe that putting the customer first is the way to run a business. I do not like their position on supporting the international OpenDoc standard.

From a short term business point of view I can understand why Microsoft might feel that it is necessary attempt to lock in customers with proprietary file formats. I believe that such a policy that is so very much against the interests of their customers is a bad business strategy.

As a stockholder, I wrote Microsoft a letter on this subject early this year. I received no response from them, which I find rude corporate behavior.

Sunday, September 04, 2005

Extending the Windows shell to explore JAR files

I started using TortoiseCVS on the advice of a customer. TortoiseCVS extends the Windows UI shell to add CVS functionality as right mouse click menu options - really useful!

I have been looking for similar Windows shell extentions for adding explore Java JAR file options. The best that I have found is Raphaƫl Mounier's ICEOWS package. I used to change a JAR file's extension to .zip, explore, then change it back - a waste of time.

Peter Norvig and Joseph Campbell

I had lunch with Peter Norvig about 18 months ago - yes, as you would imagine, he is a very cool guy - lots of fun to talk with. I just saw a link to his article "Teach Yourself to Program in 10 Years" and re-read it.

I think that his comments go way beyond programming. They remind me a lot of Joseph Campbell's advice "follow your bliss": do those things in life that you most love to do.

While I make my living designing and writing Java software, I invest a huge amount of time studying other programming languages; just in the last few years I have:
  • Studied Paul Graham's great Common Lisp books - I wrote 2 Lisp books for Springer-Verlag many years ago, but I was rusty...
  • Studied Mark Pilgrim's excellent "Dive into Python" to brush up on my Python skills
  • Learned Ruby (see my open source Ruby NLP projects on my main web site)
  • Brushed up on my Prolog skills by working through Sterling and Shapiro's "The Art of Prolog" - I used to be a Prolog guru, and I wanted to get some of my edge back
I also spend a minimum of 5 hours non-work time a week learning new Java frameworks, reading other people's Java code, articles, etc.

How do I get time for this and still have a great life? I suggest not watching TV :-)

When I talk to teenagers, I like to encourage them to follow career paths that involve doing things that they love doing - don't just try to make a lot of money.

Saturday, September 03, 2005

new web portal, some interesting implementation details

I thought about writing a free community web portal ( just for my own community but decided to scale it up to support the U.S. The most interesting technical problem was getting free ZIP code data from the US government, and writing a little code for approximating the distances between different zip codes - I needed this because I wanted people to be able to enter their own zip code and search for all events within a specified distance. This simple web portal took me two evenings to write so I am hopeful that it catches on in my own community. It would be very cool if a few other communities also started using it also. It is currently on a very low cost VPS server and should scale fairly well for use by several hundred communities; more than that and I will move it to a non VPS server.

Friday, September 02, 2005

Best movie of the year: "The Constant Gardener"

For sure Ralph Fiennes and Rachel Weisz will be up for Academy Awards for their roles. Definitely not a movie for kids, but for adults it is a must see. I have spent some time in Kenya and the movie captures the feeling of the place: warm people, but lots of sad situations. If I may, I suggest seeing this movie in the theaters, and not waiting for it to come out on DVD. I don't want to spoil the plot, but as Rolling Stones movie revues said: "[Director Fernando Meirelles] and screenwriter Jeffrey Caine put a human face on John le Carre's novel of sex, lies and dirty politics in modern Africa. Prepare for a thrilling ride."