Posts

Showing posts from September, 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

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 p

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 versio

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.

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 part

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.

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.

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

new web portal, some interesting implementation details

I thought about writing a free community web portal (OurEvents.us) 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.

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."