Saturday, January 29, 2005

Patent threats to US IT industry and my ability to earn a living

I am getting ready to write a letter to my two Senators and Congressman (from Arizona), so this blog entry is a "dry run":

As a technologist living in the US, I welcome global competition. Although it is a little rough competing with people who live in low cost of living countries like China and India, I am up for that challenge. There is another threat to my ability to earn a living (long term) that does concern me:

Ultimately, open source software is the future and in the US the writing is on the wall: corporations who see open source as a threat will try to pay off Congress to pass legislation that removes people's freedom of choice between commercial and open source software. They will do this with attempts to pass discriminatory legislation, threats of patent based lawsuits, and eventual litigation. I recognize and support the rights of individuals and corporations in regards to proprietary property, but the lax issuance of software patents has been unfortunate.

All I ask for is a fair battle between proprietary and open source software in terms of technological advantage, the maximum good for both software developers and end users of software, and society at large.

Individuals and companies who want to base their business models on proprietary software have my blessing, but I see myself continuing to want to use a mixture of open source and proprietary software in my own business and I don't want anyone taking that choice away from me. I believe that open source will play an even larger factor in my business in the future.

Long term threat to US industries: if misapplication of software patents in the US stifles the health of the US IT industry, it will only be to the competitive advantage of our global neighbors in countries in South America, Asia, etc. that openly embrace the choice between open source and proprietary software solutions. Use of open source software in schools, industry, research and development, etc. is key to enabling more individuals and small agile companies to create new technologies.

Using WingIDE for a GPLed project; Java vs. Python IDEs

A few week ago I was complaining how mediocre Python IDEs were compared with Java IDEs like IntelliJ, Eclipse, and NetBeans. I take that back: I am working on a GPLed project in Python in my "spare time" so I bought a personal Wing IDE license for use just on this project. The more I use WingIDE, the more I like it. I was wrong in my previous post.

Friday, January 28, 2005

Ubuntu Linux: job well done

After reading about Ubuntu Linux on Slashdot yesterday, I decided to burn a Live CD and try it on my dual G4 Mac desktop - very nice! For many years, KDE has been my Linux desktop/window manager - but, after seeing Gnome on Ubuntu (very well configured!), I may change my mind.

Don't get me wrong: I think that Mac OS X is the most productive operating system for my work (software design and implementation, writing). That said, I find it exciting that Free Software alternatives are getting so good. Except for being able to edit video movies, Linux comes close to OS X for just about everything that I do. Since the final target/deployment platform for just about everything that I do is a Linux server, I might decide to do more development under Linux in the future (back to the future - I did almost all of my development on Linux up until a few years ago when someone gave me a Mac OS X box).

Anyway, the Ubuntu Linux team did a fantastic job getting a good looking (great fonts!) configuration set up on the Live CD. I browsed the web with FireFox for a while, used, etc. Exciting stuff.

Thursday, January 27, 2005

good read: "Free Software Magazine"

I was looking through the Free Software Foundation web site and saw a reference to a new magazine: Free Software Magazine. The first issue, available as a PDF download looks great. My favorite article is "Motivation and Value of free resources", but other articles are also interesting. The editor wrote another interesting article on the technologies used to produce the magazine (RTF -> XML -> their XML format --> output using XSL). Anyway lots of good stuff - check it out.

Love BitTorrent for Linux distros; why not for 'Indy' TV productions?

BitTorrent is the greatest technology. Although I have SuSE Linux on my development Linux server, I wanted to install Debian on another (virtual (*)) Linux server. The BitTorrent links on the site make it simple to download ISO CDROM images and the BitTorrent technology does not eat up Debian's bandwidth. Way nicer than using FTP or HTTP.

I wrote about this a while ago: I don't see why TV networks don't distribute popular TV shows using BitTorrent technology, perhaps in a low-res 320x200 pixel MPEG format - a little lower resolution than TV, but very watchable. Leave the commercials in to pay for production costs. I think that it would be great to see a business become a low cost 'Internet only' TV network. It could start a whole new thing: "Indy" TV shows in addition to "Indy" films. Anyway, I think that it is a cool idea.

(*) using VirtualPC on my Mac OS X system

Wednesday, January 26, 2005

I wish I had written this :-)

Here is something really well written and accurate: a realistic assessment of the weaknesses and strengths of the US economy. Of course, no one can predict the future. Still, it is possible to understand some of the factors that are a threat to our economy and what we have going for us.

The figures on personal debt (and the linked graph) are surprisingly bad. Almost every smart person who I talk to about the economy agrees that eliminating your personal debt right now is most important; if you have large personal debt, simply stop spending money for a while on non-essentials. As individuals, we have no control over the trade imbalance, when the world will switch off of a gold standard, the effect of research/development/creation of new industries/etc. offshore instead of inthe US, investment in India and China being more attractive in investment inside the US, etc. But, we do have control (more or less) over our own lives :-)

What is needed, I believe, is a longer term view. Favor value to customers over this quarter's financials. Favor investing in your education and other long term investments rather than buying a new car when the old one still runs. For better or worse, the world seems to be more of a place where we have to look out for ourselves, our families, and our friends - do not expect long term employment from companies or fiscal responsibility from our government (and be pleasantly surprised when companies do value employees long term and occasionally a few of our elected officials do the right thing).

Disappointed with Sun's terms on 'patent sharing' with open source

Sure, a good looking press report, but Sun is only doing the 'patent sharing' with projects licensed under their own CDDL license. CDDL is the Mozilla license with one important thing removed: a clause permitting re-license under accepted open source licenses. As many people pointed out on Slashdot this morning: these patents can not be used in Linux.

More interesting news: I read this morning that IBM is likely to release a Linux license compatible Java runtime sooner than later. This is really big because any Linux distro can then support the Java platform 'out of the box'. Cool!

I own both Sun and IBM stock, but I must say that I find IBM's management decisions in the last few years to be more to my liking than Sun's!

Tuesday, January 25, 2005

Easy GNU gcj Java native compiler install on OS X

Tired of painful gcc/gcj builds on Mac OS X in order to get native Java compilation? Here is a Sourceforge project for high performance computing tools for OS X.

Gaurav Khanna (Physics Department, University of Massachusetts at Dartmouth) has pre-built gcj. Here is a link to a pre-built kit. Assuming that your web browser unGZIPed the file to gcj-bin.tar, just type:
sudo tar -xvf gcj-bin.tar -C /
to install in /usr/local. You can compile and run like this:
gcj --main=Test -o Test

For most purposes, stick with Sun's JDK and runtime kit - however, there are great reasons to also be able to generate native Java executables; for example: faster startup for small programs, test development targeted for Linux for GPLed projects that you do not want to use Sun's non Free Software kit for, etc.

Monday, January 24, 2005

New paradigms for web app development

I have been talking about J2EE, Python and CherryPy, and about Ruby Rails a lot lately. Although I still prefer Java for large (well funded :-) web applications, the advantages of dynamic languages for database table wrapper generation, continuation based navigation (e.g., Smalltalk Seaside, SISC web continuation examples, etc.) are compelling.

I suspect that in a few years when the infrastructure for Python 'catches up' with that for Java, that I will end up doing 60% or my development in Python and 20% in Java - the opposite from my current language choice. Still, I think that the reliability and scalability of the J2EE platform will make J2EE the "COBOL of the 21st century": there will be more agile tools available, but J2EE will be a platform of choice for large web applications that provide web services, talk to web browsers, PDAs, cell phones, etc. Scripting languages like Groovy might help make Java development more facile in the future, but I am taking a wait and see attitude towards Groovy.

New paradigms for web app development must make it less expensive to:
  • manage data persistence (for Java, tools like Hibernate and Prevayler help; for Ruby, the data wrapper capabilities of Ruby on Rails is a good start, for Python, automatic table wrapper generation from database metadata helps)
  • provide agility in writing and modifying middle tier logic (dynamic languages tend to win here)
  • easier ways to handle presentation, session management, etc. (continuation based web programming, better "what you see is what you get" tools, etc.)
I really enjoy experimenting with new technologies. I schedule about 5 or 6 hours a week to do nothing but evaluate new technologies - not enough time, but I can be a little more efficient about this evaluation process by reading other people's experiences and focussing on what are likely to be the most useful tools for my consulting work.

Open publishing of scientific research papers

The SPARC is a group of universities and publishers trying to provide free access to published journals. I noticed this morning that The Journal of Machine Learning Research supports SPARC and provides PDF copies of journal articles on their web site. Much appreciated!

Sunday, January 23, 2005

Solid J2EE applications

I have been writing lately about J2EE alternatives (*) for building web applications much faster. The great thing about J2EE web applications is that in my experience, once a project freezes requirements and bugs are fixed, J2EE web apps often run forever without any intervention except for doing backups (**). Combined with cheap Linux dedicated servers (I sometimes use $50/month servers - sweet price!), the cost of running web applications does not have to be prohibitive.

Another great way to keep costs down is up front: try to develop as little new code as possible while leveraging open source or commercial libraries and frameworks.

(*) CherryPy is a pythonic, object-oriented web development framework that seems just right to me for publishing behavior of Python objects as web services and web forms. Ruby on Rails is a very cool framework for quickly building database centric web sites. RoR's wrapping of database tables as objects is just like the way I use a generator in Python to dynamically create wrappers for database tables. I believe that CherryPy and Ruby on Rails will prove to be as stable as J2EE web applications, but I don't have enough experience with them yet.

(**) For non-life-threatening critical web applications, here is a really simple backup technique: if you have 2 deployed web applications on different dedicated servers (even better in different hosting facilities), use backup scripts on each server to do database dumps, etc., and rsync to the other server. Most rented servers have adequate disk space, and rsync reduces bandwidth by using data compression. By relying on the extremely low probability that you would experience multiple server failures, this is one more way to cut down long term maintenance costs of web applications.

Wednesday, January 19, 2005

OS X + Linux: perfect combo! Also: request for advice on SuSE Linux dedicated server providers

First: if anyone has any info on good dedicated server hosting providers that use SuSE Linux, please email me at: markw at markwatson . com -Thanks!!

I am finding the combination of my Mac OS X desktop (and iBook :-) running an X11 display with SuSE Linux for servers on my own network is just about perfect: I prefer SuSE's Yast administration tools and keeping Yast open as required for each server with the display set to my Mac is just about perfect.

For customer installations, I usually use rented servers at and but they only provide Redhat Linux based servers.

Sometimes, I like to do development under Linux in addition to OS X (for a few different reasons) and here again, OS X's X11 support makes it pain-free to develop on Linux: for example: great looking Mac fonts, not need to use the Linux server's display (actually, I usually run Linux boxes headless around here :-), great for offloading long builds, etc. from my desktop OS X box, etc., etc.

Tomcat for Java, CheryPy for Python web apps?

I have been checking out CheryPy for a roughly "Tomcat equivalent" framework for building dynamic web apps with Python. Most of my consulting business is based on building web applications written in Java that use Tomcat for a servlet/JSP container, containing background work threads, etc.

In the last year I have been using Python more and more (especially since I spent a day at Google last March and almost every engineer I spoke with raved about Python). I still think that Java+Tomcat or Java+full J2EE stack is best for most heavy weight web apps. However, I am finding Python to be a compelling language for small and medium size projects - higher programmer productivity than Java (perhaps even a more productive language than Common Lisp). I am hoping that CheryPy will provide a platform for building small and medium scale web apps very quickly.

Monday, January 17, 2005

I have finally switched to Java 5 language features for new development

Not for consulting work (yet), but for my own development for new code, I am starting to use the new JDK 1.5 (or 5) language features. Since I run under Mac OS X, you might think that this is a problem, but I have a Linux box on my home office network and I simply use X Windows on my Macs. One of the things that I have always loved about Common Lisp and Python is how concise code can be; the new Java language features help a lot. For a contrived example:
import static java.lang.System.out;

import java.util.*;

public class test {
public static void main(String[] args) {
out.println("JDK 5 new language features\n");
List<String> strs = new ArrayList<String>();
strs.add("cat"); strs.add("dog");
for (String s : strs) out.println(" " + s);
Cool, but this is still pretty weak compared to Python's list comprehensions, etc.

Why don't more customers want to save money with Open Source development?

The desire to totally own something can be expensive. I offer customers a 33% discount when they hire me for either Free Software (GPL) or Open Source (MIT, BSD, Apache, etc.) licensed projects. In addition to that savings, development time on GPL projects is almost always shorter because existing GPL software can be used. Also, with open source projects there is always at least some chance that other users will contribute useful code back to you (*).

I have talked to several of my customers at length on this issue. Most simply want to totally own the rights to what they pay for - no argument from me if that is what people want. Still, I think that many customers overate the value of keeping software that they fund proprietary: it is a "big world" out there and any small company is likely to have a huge number of competitors in their product and/or service space. For some projects, it makes sense to me to cut infrastructure software costs "to the bone", go open source, and try to compete for customers based on service. The risk of competitors taking away some business in many cases is less than the risk of spending too much money to get the infrastructure software that you need for your business.

(*) About 8 years ago, when I bought my first digital camera (wow, 320x200 pixels!), I faced the problem of storing and accessing thousands of vacation and family pictures. My solution was to 'scratch an itch' and write the PicWeb Java utility that would recursively scan directory structures and generate thumbnail images and an index.html file in each directory that would link to the index.html files in all subdirectories and all image files in the current directory. Really a simple program, but I had over 40,000 downloads from my web site over the years. The great thing was that 4 or 5 people made huge improvements to the functionality of PicWeb and for the slight cost of folding their code changes back into my codebase, I got the advantage of all of their improvements (as did everyone else). BTW, PicWeb was certified by Sun as a "100% Java" product and for that they sent me a free leather jacket with a giant embossed Java logo on the back. Still one of my favorite jackets. (Sun also waved the $1000 "100% Java" certification fee for both PicWeb and another open source project that I had, the NLBean).

Sunday, January 16, 2005

Has Novell screwed up SuSE Linux?

OK, I am irritated: I installed SuSE 9.1 Personal a while back - looked good at the time. Today I needed to test Python stuff for Zope/Plone under Linux: I discovered that SuSE 9.1 Personal does not include the GCC C Compiler! I am hunting around the web for SuSE 9.1 RPMs for GCC -- what a hassle!

I can not believe that any Linux distribution would not include a C compiler.

I think that I am going to just wipe 9.1 and install from my old 8.1 personal CDROM. ... or, maybe invest an hour and do a Debian install.

PS. I ended up just burning a CDR containing RPMs from a SuSE mirror FTP site for gcc, gcc libs, and emacs - and stored this CDR with my SuSE personal install CD. I am still a fan of SuSE, but I still find it annoying to not include a C compiler with even a trimmed down Linux distribution.

Friday, January 14, 2005

The best Java CMS system

I wrote about the Daisy CMS system last year and I have spent more time with it recently. Daisy is released under the Apache 2 license and was written by Outerthought (under funding from Schaubroeck).

Daisy is a bit of a rough install (the first time I installed it it took about 30 minutes to set up the MySQL tables, and get all three server processes running (each runs in its own JVM). One of these processes is OpenJMS. I want to re-work Daisy so that it runs under JBoss with minimum installation hassles (e.g., use the built in JBoss Jorma JMS service and perhaps even use HSQL by default with automatic table generation). I would like to extend Daisy (still under the Apache 2 license(*)) to be a snap to install and run with JBoss.

Daisy is cool!

(*) in the future I would like to also add my KBtextmaster technology and make a separate commercial product that is a low cost turn key complete document management system.

Updated my white paper "Jumpstarting the Semantic Web"

I added a new section to the end and fixed a few small other details. If you are interested, you can download it using this link. This is a paper that could be described as "what I would like customers to pay me for working on" :-)

Interesting stuff on Semantic Web; my idea that I am going to hash out

Danny Ayers links to Peter Norvig's comments on the Semantic Web. Both Danny's and Peter's comments are well worth reading.

Later today(*) I plan on updating my "Jump-starting the Semantic Web" white paper, but here are the basic ideas I want to explore:

I have been thinking about an idea mentioned in Antoniou's and van Harmelen's "Semantic Web Primer" (a nice book, BTW): use ontologies like (in an object oriented sense) an interface to information. Good Java style calls for coding to interfaces so underlying implementation classes can be modified, swapped for other classes implementing the same interface, etc. Consider a similar strategy for dealing with mass amounts of information that uses different vocabularies, formats, etc.:
  • create an ontology for information that is high value to your business
  • identify sources of raw data for the topics covered in this ontology
  • write custom connectors to the raw data sources that convert vocabulary, understand the data source formats, etc.
  • search and information retrieval is through the ontology
  • profit!
Peter Norvig's statistical approaches sound much more interesting and with the resources at Google it will be interesting to see what they can do. Anyway, I have more to add to my white paper.

(*) when I get up! My wife and I are still in bed at 9:40am with our wireless laptops, coffee, baby parrot(**), and Italian Greyhound. Lazy! :-)

(**) Brady spends more time sitting either on the top edge of my laptop screen or my desktop flat panel monitor in my office than you would believe - he behaves himself well enough so that this is not usually a problem.

Wednesday, January 12, 2005

US food imports at an all time high? WTF!

From the Washington Post (AP):

"The U.S. trade deficit hit an all-time high of $60.3 billion in November as American appetites for foreign oil and even imported food reached record levels."

I thought that we were a nation with lots of agricultural production capacity.

Don't like what is going on? Contact your representatives in Congress! These are the people getting mega-bucks from special interests! Push back a little and ask them if they would like to be re-elected.

I will let you in on something that is not quite a secret, but is still little known: Clinton, Bush, and a well paid (by special interests) Congress passed laws making it really easy for corporations to register off shore and avoid a lot of their US tax burden. Now the deficits are going through the roof, the rich and corporations easily move assets out of the US to avoid the looming economic crash, and regular folks are going to get screwed.

I just thought that you might like to know what is going on :-(

Updated version of "The Software Development Book for Java Developers" available on my web site

You can grab a PDF file of the new version on the Free Web Books page of my web site.

I have made major changes to my Free Web Book "The Software Development Book for Java Developers" today. This book is still incomplete, but I did work on it for 3 hours today. Now the chapter layout is "cast in stone" and the book itself is about 60% complete. Enjoy!

I have good intentions of finishing this book in the next month or two, so you might want to wait.

Tuesday, January 11, 2005

Source code for demos; future commercial and Free Software projects

If anyone is interested here is a ZIP file with User Guide and source code for demos for my KBtextmaster product. The Java code base is frozen, but I will not start selling the product for another 3 or 4 days (extra testing!).

Anyway, this has been a major amount of work for me and I am looking forward to finishing up and starting development on my next planned product. My plans for the next year are:

1. Port Apache Daisy content management to run under JBoss (use built-in JMS instead of OpenJMS, combine deployment of DaisyWiki and DaisyRepositoryServer in easy to install EAR file). I will add lots of the functionality of my KBtextmaster product for clustering, adding semantic information to the Lucene based Daisy search engine, etc. The idea is to have one very low cost (I am thinking about $50) commercial product that makes it is easy to set up and administer a document management and storage portal.

2. GPL Free Software project PyTextMaster: I want to take a good part of the functionality of my KBtextmaster product and implement it in Python. I want to make it free for use under the GPL and to also offer a low cost alternative commercial license for people who need that.

3. I am a huge fan of the Zope and Plone GPLed projects. I would like to integrate PyTextMaster with Plone in useful ways.

IBM, patents, open source

Nice discussion of this over on Slashdot today. This is a super-smart move on IBM's part. Their license promises some pain to companies who try to sue authors of any open source projects for patent infringement. Good move. I believe in the utility of commercial, Open Source (Apache, BSD, etc), and Free Software (GPL) - all useful licensing options for different purposes.

Of course the best thing would be to not allow software patents, but I think that is a lost cause.

I think that if market forces are allowed to naturally work (i.e., no corruption involved in passing laws that are good for the few and bad for the many) that in 20, 30, 100 (whatever) years, then we will see a progression to most software being either open source or small custom projects layered on open source.

Monday, January 10, 2005

API Javadocs for my KBtextmaster product

I finished the port to Java from Common Lisp of version 2 of my KBtextmaster product and just published the public API here.

Tomorrow I will also publish the user's guide and a ZIP file containing the source code to the demo programs (e.g., a service wrapper for using KBtextmaster to index and cluster documents for a web application, a sample search and clustered document client, and several tiny examples for using the basic natural language processing APIs).

KBtextmaster also provides pure Java solutions for reading Word, Powerpoint, PDF,, AbiWord, etc. files.

I hope to finish final testing and start selling version 2 in 4 or 5 days. Version 1 was written several years ago in Common Lisp. I have been working on version 2 since early 2004, so this will be a major upgrade.

I have a PDF file for a color product brochure here.

Sunday, January 09, 2005

Legal uses for BitTorrent; suggestions for TV networks

There are already compelling legal uses for file sharing using BitTorrent; for example: distributing Linux ISO images.

There is another use that makes all the sense in the world to me: I would watch more network TV if I could watch shows when I wanted. Why don't TV networks submit lower resolution copies WITH COMMERCIALS of their shows as torrents?

Clive Thompson makes this great point in his article in WiRED (January 2005): any media with embedded commercials can be distributed cheaply using torrents. Thompson argues, probably correctly, that distributing via torrents does not work for the movie industry. However, how about ramping up product placements and perhaps do toss in a few commercials.

TV and movie distribution would need something like the Neilson Ratings for TV in order to get proper credit from advertisers. seems to do alright streaming video with commercials before the video clips.

This may not be a popular opinion, but I wish people "illegally" (at least in the US) trading copyrighted materials like MP3 files and bootleg movies would cut it out. I spend just a few dollars a month on the iTunes music store and that gets me more songs to enjoy every month. I would like low cost ways to download and watch movies also. Like Thompson points out, most people do not want to permanently keep video: download and watch once or twice then toss it. This especially works when material is free, paid for by advertisements.

Web app development work: plain Tomcat vs. JBoss?

I just about totally base my Java consulting business on Tomcat (almost all of my work is in developing web applications). When I need a J2EE component (e.g., JMS) I use an external high quality open source package (e.g., JoNAS JMS). Instead of EJBs, I simply write and debug "middle-ware" code for accessing data sources, business logic, etc. After it is working, then I do the presentation layer with JSPs and struts (old fashioned stuff :-)

Even though it is not as light weight as plain Tomcat, I am considering switching over to using JBoss 4.01 as my standard development and deployment platform and always have the full J2EE stack available. I have not personally used JBoss clustering yet, but from what I hear it is stable. I have never been a huge fan of EJBs but by annotations like XDoclet makes using EJBs fairly simple.

Anyway, development and deployment computers are so much faster than they were back when I started doing server side Java development that I might as well just have the whole J2EE stack available. (Sort of like when I code in Common Lisp: I like to load an image that has just about *everything* that I have ever written in it :-)

I would like to hear from other consultants and get their opinions (which I might summarize here if I get enough responses).

Love PayPal - perfect tool for consultants and 'small time' software venders

Every so often I see people on Slashdot bashing PayPal but in my opinion they are simply not using the service correctly. To receive payments I recommend getting a separate savings account at your bank and only use this account for PayPal. Also, I tend to not let more than a few hundred dollars sit in PayPal before I take a minute and have the funds transferred to my savings account.

PayPal is also great for contributing a few dollars at both people and organizations that you might want to encourage to keep working on projects that you find worthwhile. (I thought about this today when the Wikipedia servers were running slowly - it felt good to take one minute and send them a little money. Why not pay for my use of their servers?)

Great source for free online AI research papers

In the last year, I have been enjoying access to papers on the ACM library portal - costs some money but well worth it. I just saw a link on to Constraint Programming Online. This site has a link to the "Theory and Practice of Logic Programming" site that has many online papers as PDF and Postscript.

Saturday, January 08, 2005

Admitting bad habits

I have fascination for just about everything. I realize this and try to only hit the link to Wikipedia's random page view 5 or 10 times a day -:)

I also have a practical interest with Wikipedia: currently I use the huge manually annotated Reuters news story corpus for machine learning runs to build categorizers. I want to try using the Wipedia entries also.

Something really nice

Today has been a grind working on documentation and demo programs for my Java KBtextmaster product. A friend just sent me a link to something really nice that was a good break from work.

This is a short web movie that reminds me that most people really are good at heart and that all people are connected by shared experiences. I really recommend spending 2 minutes and watching this (it is a great antidote to hearing Ann Coulter wish that Tim McVeigh had visited the New York Times offices and hints that perhaps liberals in the USA should be killed(*)).

Some people would like us to forget what all people have in common; you know that I am talking about the "either you are with us or against us" crowd.

I believe that we can have a strong defense and protect our country and our way of life without embracing hate and promoting a feeling of separation with people who are different than us.

It is time to turn away from darkness and dark thoughts and celebrate the ties that bind all human beings together. When you hear someone preaching hate (**) ask yourself if they are simply an idiot or what their agenda is. We are an open country and everyone has the rights of free speech; still, when people like Coulter start spouting off philosophies of hate and alienation, I think it is best to publicly ridicule what they say and put them in their place. I get tired of listening to radicals on both the far left and the far right, but lately the radicals on the far right seem to be the most noisy.

(*) try doing a web search for things like "Ann Coulter 'New York Times'" or "Ann Coulter kill liberals". I am assuming that at least some of this stuff that I read about her is true.

(**) speaking of hate, why is it that Republican leadership in Congress is trying to eliminate hate crime laws? Why are a lot of Democrats going along with this? These actions just do not make sense to me.

Java trick for reading files

I have read a few times about people having problems reading the ZIPed XML files in documents. The problem is SAX parsers not being able to locate a local copy of the office.dtd file. I have been using a kluge to get around this problem for a long time and have not had any problems with it: When reading the input stream from the ZIP file entry labeled "content.xml", skip past the second ">" character:

InputSource is =
new InputSource(zf.getInputStream(zipEntry));
InputStream r = is.getByteStream();
for (int i=0, count = 0; i<500; i++) {
if ((char) == '>') count++;
if (count > 1) break;
SAXParser p = saxFactory.newSAXParser();
p.parse(r, new OpenOffice.OpenOfficeSaxHandler());
Hopefully in the future people having this problem will find this post when doing a web search and save themselves a little time. Another good alternative is to make office.dtd available on your system and put it on your classpath.

Thursday, January 06, 2005

Perhaps it is time to sell the last of my Microsoft stock

I saw an interview with Bill Gates linked from Slashdot. Yes, Gates really does compare Free Software with Communism. I suppose that some non-thinkers might swallow this bullshit. As someone pointed out on Slashdot, Free Software and Open Source software is more akin to a community bake sale at a church: people cooperating for local benefit. Gate's argument (as the same poster said on Slashdot) is like: protect the property rights of restaurants by banning church bake sales -- a great way to argue the point and refute Gates' lame argument.

I differ slightly with people like Richard Stallman at the FSF because I think that commercial, Open Source (BSD, Apache, etc. licenses), and Free Software (GPL licensed) all have a place in the IT ecosphere. Still, Stallman makes more sense to me than Gates. I need sales from my commercial software products to augment my consulting income but I am always trying to find ways to also justify Free Software projects when they make sense. I also base so much of my consulting business on Free or Open Source projects like Linux, Tomcat, Apache, etc. that I am naturally prejudiced in favor of supporting free infrastructure software.

I usually do not blame people for "voting with their wallet": owners of non-US based corporations win big with Bush by reducing their tax bills; Bill Gates sees his business slightly eroding because of projects like Linux and Open so he attacks these projects any way that he can, etc. Can't blame them. However, for small companies, consultants, etc. there are enormous benefits to using high quality free infrastructure software. Reducing overall costs for customers means getting more work in the long run: the less people have to pay for both hardware and software infrastructure, they can afford more custom software projects or simply pocket the savings.

Tuesday, January 04, 2005

Having fun in San Diego

I am in San Diego seeing family and friends. Sunday was great: I took my two young grandchildren to Lego Land for the day. I was having breakfast with an old friend (now a Yahoo search guru) in Del Mar this morning and I also ran into one of my favorite bosses from my years at SAIC (I worked for this guy 3 different times - good to recycle old bosses!)

For late Christmas presents, I bought my parents a Mac iSite video camera and they bought me one - now, if I comb my hair I can talk with my parents and let them see me in my home office in Sedona. Should be fun. I don't meet many of my customers (since I telecommute) so it might be cool to have occasional short video-enabled teleconferences with customers also.

I will be back in my home office in Sedona on Thursday.