Sunday, December 31, 2006

My take on Microsoft/Linux patent issues

Since the Novell/Microsoft deal, more of us worry about Microsoft legal attacks on Linux using some of their (unnamed) patents. This is troublesome to me for at least two reasons: Linux and other open source software allow me to build systems for customers at a lower cost point (good for my business), and I enjoy developing on a Linux box for Linux deployments.

For Linux on the desktop, I believe (but I am not a lawyer) that as long as I (and other Linux users) typically buy a commodity PC with Windows and then install dual boot Linux, then how could I possibly be infringing on Microsoft patents: I have a paid up license for Windows on the same PC that I am running Linux on. The situation for server side Linux is less clear, but server side Windows is much less important to Microsoft's cash flow than the desktop.

Accurate predictions are difficult, but I would not be surprised if through corruption of politicians some countries put up legal roadblocks to using free (as in GPL) and other open source software. Long term, I believe that these countries will be at a competitive disadvantage over other countries where businesses of all sizes and individuals can continue to lower IT costs while benefiting from collective software development.

It is really simple: diversity of commercial and open source software, with fair competition is good for business. As a reluctant Microsoft customer, I would ask Microsoft to publicize which of their patents that they think Linux violates - provide real details. Of course they will not do this because I believe that their strategy is to threaten but to not take action. Computer professionals can push back against Microsoft by favoring companies like IBM that take a more fair and balanced approach to commercial and open source software. We can all help by making small contributions to organizations like FSF and the EFF.

Saturday, December 30, 2006

JRuby 0.9.2

JRuby 0.9.2 was released a few weeks ago but I just got around to trying it out this morning. My favorite feature is the "JRuby IRB Console". An easy way to experiment with JRuby is to simply to download the console JAR file that conveniently contains the JRuby run time system, has a "tab auto complete", and has readline support. If you have not given JRuby a try yet, download the IRB Console, and follow through the tutorials. Good stuff!

JRuby performance problems:

I love programming in Ruby but find myself working a lot in Common Lisp instead for vastly better runtime performance. JRuby performance is very poor at this time (much slower than the standard Ruby system, which is itself slow), but with support from Sun and some development time, performance and Java platform integration will improve.

Thursday, December 28, 2006

Getting around problems with Apple's iTunes DRM

I have had computers either break or I reloaded the operating system without de-authorizing the computers from Apple's iTunes music store. There is a limit of 5 authorized computers per account, so I was in the position of not being able to play some TV shows that I purchased. It turns out that all you need to do is visit Apple's support page for iTunes that starts the iTunes application, allowing you to de-authorize all computers. Then you can re-authorize just your currently working computers. You can de-authorize all computers once per year.

Thursday, December 21, 2006

Correction: Google SOAP Search APIs

Google has stopped issuing new API keys to developers and is adding no new resources to support the search APIs, but: "you can continue to execute queries, and we have no plans to turn off the service in the future".

Better news!

Web services as a business

I am disappointed that Google did not keep supporting their SOAP based search APIs. Google seems to favor too strongly advertising revenue over other revenue streams like:
  • Commercial support for a search API - pre-pay per a large number of search requests
  • Subscription CDR or DVD-R backups of a user's data for all Google services; for example: for a fee, receive a backup in the mail every 3 months: I would consider $50 to $75 (depending on if a CDR or DVD-R is required) dollars per year to be reasonable and with the number of people using GMail, Google Docs, Calendar, Reader, etc., this might be a good revenue stream
In any case, I would like to see more success stories for large and small companies commercially supporting web services.

I hope to have a major version update of my KBtextmaster natural language processing (NLP) toolkit released in the next 4 months (or so). I am planning on providing a public web interface so customers can "try before they buy". I am likely to provide a public REST based web services interface also - easy since the product includes REST and SOAP support. I have thought a lot about selling web services that extract semantic information from news stories, but it is likely better to just sell customers KBtextmaster and help them customize it for their specific needs.

Tuesday, December 19, 2006

Google search API: rest in peace

I have been using Google's search API (limited to 1000 queries a day) for research and demos since 2002. A cool service, I am sorry to see it go.

I also use Yahoo's free search API and sometimes run Nutch which supports the OpenSearch API.

My favorite use of Google's API was a "who/where" natural language processing question answering demo that I used to run on knowledgebooks.com

Sunday, December 17, 2006

I updated RubyPlanet.net this weekend

I spent an evening or two a year ago setting up RubyPlanet.net for my own use: I wanted a one stop Ruby news page. I spent an hour yesterday putting RSS/Atom spidering in a background work thread to avoid occasional delays in processing requests.

DRM and (Un)Trusted Computing: really a big deal?

I have blogged several times on how much I enjoy Apple's iTunes store, always burning any songs I buy to a CDR as MP3 as backup. I just did get burned by Apple's DRM however. This was partially carelessness on my part and partially some bad luck with hardware. You can only "authorize" 5 computers at once to work with your iTunes store account. I had a disk go bad on a Mac and had to re-install OS X without first unregistering the computer with the iTunes store. I had a similar experience recently with a Windows laptop: re-installed Windows without remembering to de-authorize that computer with the iTunes music store. Now I can't watch several Battle Star Galactica videos I purchased on my laptop. Oh well, no great loss.

(Un)Trusted Computing is a bigger deal: if I buy a computer, I want control over:
  • What software gets installed on my computer
  • When I buy a license to run an operating system, like Windows, I want to be trusted as a customer, and not have my computer (partially) disabled if Microsoft makes an error
I am currently running Windows 2000 on my laptop, and I am happy enough: I still can get security updates, my system is stable, and I can run Windows-only VPN software that my customer provides me. My experience with Windows XP was less happy, but still reasonable. While Microsoft Vista's (Un)Trusted Computing might appeal to unsophisticated computer users, Vista does not appeal to me, and I am hoping to permanently avoid Vista.

Richard Stallman and Eben Moglen of the FSF.org have been warning about loss of freedoms for computer users for many years, and unfortunately some of their dire predictions seem to be coming true.

What I think is important is that people who want Microsoft's Vista should have the right to Use Windows. Same with Apple users. People who want to use these proprietary systems will certainly be able to get "locked in" all they want.

The problem I have is for the 1% to 2% of computer users (like me!) who appreciate the advantages of running Linux, even without having access to media like DVDs, etc. I want to be "left alone", and be free to set up my Linux computer as I like it. In regards to patent issues: I see great hope because large companies like IBM are sharing part of their protective patent "umbrella" with the Linux community. Good going IBM - I will certainly give them my business when I can. Also, I hope that the courts take a fair approach to enforcing patents: patent holders like Microsoft who might want to legally attack Linux users should be made to publish which patent violations Linux is supposedly guilty of, and I believe that the Linux community will quickly get rid of any legally offending code if any such code exists in Linux.

Saturday, December 16, 2006

Public web applications and knowledge workers

Public web applications, especially those that allow exporting my data in easily processed formats, have been the most important changes in the way I use computers since I made the transition from punched cards to a Dec-10 in the 1970s, when I bought my second home computer in 1978 (serial #71 Apple II), when my company SAIC bought a Xerox Lisp Machine for me in 1982, and I started using the Internet in 1985. I now use GMail, Google Calendar, Blogger.com, Flickr, Google Documents, Gliffy.com, Google Reader, Picasa web photos, and del.icio.us as a regular part of my work process and for entertainment.

The key thing is that all of these public web services allow you to export your data for archival backup, use in utility scripts and programs, etc. Most also support, in addition to manual data export, web service interfaces.

The only work that I perform "locally" is programming in Emacs+Common Lisp, various languages in Eclipse, and writing large documents using either Latex or OpenOffice.org. Even for "local work", all of my working materials are stored on leased managed servers in subversion repositories.

Thursday, December 14, 2006

Java JDK6: bundling web services, embedded database, etc.

I have been reading some negative comments on adding web services, embedded database, etc. to the core Java libraries but I think that this is in general a good thing. If you don't like the now "standard" web services libraries, then just use the stack you prefer. The good thing is that it is just about trivial to do two things:
  • Export methods from one of your POJO classes as a web service
  • Build a client from a WSDL resource (e.g., "wsimport -d generated http://test.com/stock?wsdl")
Java DB (Apache Derby) is a good embedded database and having it in the JDK (but not the JRE) by default makes it easier to deliver small applications to customers and feel more confident that they will have an easy installation experience. I could care less if the JDK download is a few megabytes larger.

Tuesday, December 12, 2006

Eclipse Mylar: automating context manangement for work tasks

Mylar is a new Eclipse extension for associating parts of a project with different specific tasks. You inform Mylar as to which task you are working on, and Mylar learns to associate project resources with tasks stored in Bugzilla (best support), Trac, and JIRA repositories. I set up Milar to use local tasks that are stored with my Eclipse workspace - when collaborating with other developers, sharing tasks with Bugzilla is the way to go.

Switching tasks (either local or stored in a Bugzilla repository) is quick, and automatic hiding of project files and resources in Milar's "focused UI" helps reduce the overload of information that a programmer needs to deal with. So far, I have only used local tasks and Ruby projects but from the documentation, Milar should work the same for Java, Python, etc. development in Eclipse.

Great idea and well implemented!

Monday, December 11, 2006

out of the hospital and back online

I have 2 large pulmonary embolisms - a bummer, but I am stable now and out of the hospital :-)

Saturday, November 25, 2006

AJAX tools for multiple development platforms

I feel like I have come full circle (almost) in AJAX development: I started out a few years ago adding some simple AJAX enabled forms to a JSP based application. When first starting out, it took hours to get something working. Then a year ago, I discovered how simple it is to use AJAX in Rails: fine, except that Ruby does not have high enough performance for some applications (unless large parts are written in C - Ferret, for example).

I have spent many evenings playing around with various release versions of the Google Web Toolkit (GWT) and it is very compelling, especially if you already are used to developing GUI applications in Java - the only new wrinkle worth mentioning is getting used to handling events asynchronously. The problem with GWT is that it really does tie you to the Java platform. I spend most of my time developing AI applications, but that said, who does not want basic knowledge and competence at building web applications?

I use Common Lisp, Java, and Ruby for development, so for the occasional AJAX tasks that I have, I have settled with the well respected dojo Javascript toolkit because it plays very well with both Lisp and Java JSP based web applications. Dojo is also easy to use with Rails, if you want an alternative to Rail's great AJAX support.

By using Dojo, I basically have to deal with just one learning curve no matter what platform I am developing on. Here is a simple example for a JSP page (assuming that this would be more interesting to most people than a Lisp example):

Add this to your <head> section on a top level JSP page:

<script type="text/javascript">
var djConfig = { isDebug: true };
</script>
<script type="text/javascript" src="dojo.js"></script>
<script type="text/javascript">
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
</script>
Then try putting this somewhere on your JSP page (note: this assumes that you have another JSP page ajax.jsp that gets the form values and returns content to be placed into the DIV element with ID=ajxplydiv. Anthing that ajax.jsp writes using out.print() gets inserted asynchronously into the "ajxplaydiv" DIV element):

<h3>test AJAX Form:</h3>
<form id="myForm">
<input type="text" name="input_test_form_text" />
<input type="button" name="button1"
value="Try AJAX form" id="ajaxButton" />
</form>

<div id="ajxplaydiv">
initial context for AJAX play div
</div>

<script type="text/javascript">

var buttonObj = document.getElementById("ajaxButton");
dojo.event.connect(buttonObj, "onclick",
this, "my_onclick_button");

function my_onclick_button() {
var ajaxargs = {
url: "ajax.jsp",
load: function(type, data, evt){
dojo.byId('ajxplaydiv').innerHTML = data;
},
error: function(type, data, evt){
alert("Error occurred!");
},
mimetype: "text/plain",
formNode: document.getElementById("myForm")
};
dojo.io.bind(ajaxargs);
}
</script>
The call to dojo.io.bind sends a request containing the form data to the ajax.jsp page, and whenever the results are returned then the Javascript functions "load" or "error" defined in the data block in my_onclick_button() is called. This is just one example of processing form data and adding HTML below the form without refreshing the page - but is a common use case for using AJAX. This example assumes that I have both the dojo "src" directory and dojo.js in my top level web resources directory. The great thing about dojo is that it encapsulates all asynchronous event handling, offers a good supply of visual components (that map to HTML elements) and is simple to use no matter what programming language you are using for a web application.

Monday, November 20, 2006

'Perfect' Mac OS X backup procedure

Backing up my user files under Linux is easy, if everything in /home/mark fits on a DVD-R. A Linux re-install is quick and then overwrite /home/mark. I usually install applications that I build from source in my ~/bin directory and Ubuntu's package manager makes it quick enough to restore other required apps (PostgreSQL, etc.)

The Mac is not so simple because installed applications store frameworks in the system library, etc. Still, it it easy to make a reliable backup, assuming that you have an external FireWire (or I suppose an USB) disk drive:
  • Make sure that there is room on your external disk for your home directory and another 5 gigs
  • Plug in your external backup disk, and restart with your install DVD
  • Install OS X, choosing the external drive
  • When the installer asks if you want to import previous user data, say yes and select your internal disk that contains your system and user account
  • Reboot using your external disk and run software update
  • Pack away your external disk as a backup of your working environment - preferably off site for extra protection.
If you run this procedure while you are reading or watching TV, this is a low overhead operation - cumulatively just takes about 10 minutes of time (about 1 hour wall clock time). An external disk can obviously also contain other backups of large video files, etc. in addition to your OS X and user setups.

Nothing is for sure in life, but external disks are likely to have longer shelf life for your digital assets than CDR-R and DVD-R media, but using both, and off site backup on remote servers, etc. is also a good idea.

Because of the (hopefully) very high reliability of external FireWire (or USB) disk drives, I also copy important Windows and Linux backup files to an external disk using either my LAN or DVD-R backups. Replicating really important files to multiple computers on your network using rsync is also a good idea.

Sunday, November 19, 2006

Offshoring vs. increasing the number of H1-B visas

I believe in a world economy, so if safeguards are in place that penalize corporations for unfair treatment of workers in areas with much lower cost of living, then I definitely support the concepts of off-shoring "white color" jobs and manufacturing jobs. I would like to financially penalize corporations for moving work to take advantage of a lack of local environmental laws. Business should be done in the least expensive and most productive way possible, but we need to factor in the importance of maintaining good working environment and environmental standards.

Although I support, with some small caveats, off-shoring work when it makes economic sense, I am very much against greatly increasing the number of allowed H1-B visas. I have heard too many stories of abuse of imported guest workers. For those H1-B workers that we allow in to the US every year, I think that they should be free to job hop, and try to maximise their salaries as can US citizens. Unfairly treating H1-B guest workers also has the effect of artificially lowering salaries for US workers - a bad thing. It might not seem fair, but I would allocate H1-B visas based on excellence - with the view that it is likely that many of these people will eventually become citizens and why not attract the very smartest people?

There is one thing that I would like to see done to help US workers, present and future: during the Bush administration we have seen a huge shift of wealth to the very richest via tax cuts and some sectors of the economy to support the war in Iraq. I would very much rather have seen most of this money not spent at all (smaller deficits!) and a little of it (perhaps 30%) spent for more effectively preparing our country for dealing with 4th generation war (nation state vs. organized groups) and to provide more scholarships and extended education funds for US workers.

Ha! Compare Nintendo Wii to Sony PS3 rollouts!

I am a bit biased, having worked on two Nintendo U64 games (mostly game AI). That said, Nintendo seems to be doing everything right:
  • Concentrate on game play: Shigeru Miyamoto (who was at Angel Studios the first morning that I started there - many years ago) felt that the key to better game play was a new controller metaphor, not expensive graphics hardware. Start with a concept (game play/controller vs. graphics hardware) and carry that through from development to launch
  • Profitable console! Compare to > $200 loss on selling PS3 console.
  • Launch with sufficient units: satisfied Nintendo customers vs. many disappointed Sony customers
Well done Nintendo. While I sometimes enjoy gaming on my Sony Portable Playstation, I was disappointed by the very high cost of movies in the UMD format. While I am tempted to buy a Wii (my stepson, son in law, and grandson will all be visiting for Christmas, and a new gaming machine would be fun for us!), I am not inclined at all to buy a PS3.

Friday, November 17, 2006

New World Order: things that will effect its outcome

I was reading people's opinions on Slashdot this morning about Microsoft's indirect attack on Linux through Novell and saw an example of the New World Order at work: an entrenched corporation fighting against a distributed movement for free and open source software. If you enjoy history, then you know that the rich and powerful have always bought and influenced governments but I believe that the New World Order of Corporate Power is something different:
  • More transparent: with the Internet, it is too difficult to contain information and free speech - a good push-back against corporate consolidation and control of news media for their own interests. With more transparency, it is possible for people to be more aware of corruption and control.
  • The world is even less of a "zero sum game". When Spain recovered huge deposits of gold, emeralds, etc. in the New World, they increased the money supply (gold) but also spurred other European nations to other areas of technological inferiority that had valuable resources. Although slowed down by energy costs, we now see opportunities around the world open up - someone winning does not always mean that someone has to lose. (In the context of this blog: I see a win-win situation between proprietary software and with free and open source software, with competition between the two approaches as a good thing.)
  • Countries/corporations that move early to alternative energy sources will have a large long term advantage as the price of oil increases
  • Real value vs. vapor: with the fiat U.S. currency (I have seen estimates that the privately owned Federal Reserve has increased the supply of dollars by about 20% so far this year - the cost of printing money is much less than the current "value" of money!) common people do not own much real equity value: any money they hold has dubious value when a private group of individuals has control over inflation, etc.; people tend to not have much real equity anymore in their homes and are at extreme economic risk when inevitable real estate value crashes occur (they always occur - it is just difficult to say when they might occur). Real value is in industrial production capability, education that enables "high up the food chain" employment and entrepreneur-ship, intellectual property, trade and business partnerships, etc. It is not difficult to see that except for high valued education/job skills and the entrepreneurial success stories, that most real value lies in the control of large corporations and the individuals who have capital and ownership of these corporations.
  • Formally third world countries are enjoying a major upswing in the percentage of middle class workers while established industrial nations are seeing a greater separation between the very rich and a shrinking middle class and the poor. This is natural: areas of very low cost of living that can supply well educated and motivated workers draw in business development, research and development, manufacturing infrastructure.
I think that as much as the world looks more "global", that we will see a huge difference in economic success between countries (and trading blocks that share laws affecting business and trade) that either:
  • Allow corporations to do business but do impose minimal laws to encourage business growth at all levels. Or:
  • Allow corporations to do business and through corruption or other processes discourage business growth and development for all but the largest corporations.
Minimal government is best but some government and fairness in laws and enforcement of laws is required to maximize economic growth and the general good.

I believe that in the future talented people will naturally migrate to countries that provide minimal but fair government and give people good value for their (hopefully small) taxes. Countries like the USA (my country) where a very large fraction of people's federal income taxes goes to pay interest (on previous government expense overruns) to the private individuals who own the Federal Reserve will be at a competitive disadvantage as taxes have to keep rising to pay off previous debts. In a very real sense, government spending overruns enrich the most wealthy people. Small surprise.

What can people do to build more value instead of vapor? A few things come to mind:
  • If possible prefer to reside in regions of low tax and high economic growth.
  • Prefer more education to less. Prefer training in high skilled jobs that must be performed "on site" and can not be done remotely.
  • Prefer investment in corporations with real production value, real property, scarce resources, etc. Prefer to not take out a second loan on your home to buy a new SUV that is better than the one your brother in law bought last week.
The great thing is that we all have control over our decisions in life. While external events can affect the results of our decisions, we still get to decide how to allocate our personal resources and how to live our lives. Self Responsibility = Self Empowerment.

Monday, November 13, 2006

GPL license for Java

This is a good thing, to be sure! However, I have to wonder how this might affect Sun's revenue for Java in embedded devices, etc. Sun has a huge investment in Java and as a corporation they really do need to generate revenue from Java.

One thing that I would like to see happen is tight JRE integration with Linux systems: a mechanism for running a shared JVM instance for small Java utilities and porting Apple's contributions for sharing more memory between JVM instances running on the same system.

Saturday, November 11, 2006

Pricing of Microsoft Windows Vista

Seeing the very high list prices for the "complete" versions of Vista is a little disappointing. I don't use Windows very much, but I find the flexibility of a dual boot Linux/Windows PC to be useful. For my work, I use fairly inexpensive PCs and Macs because except for rare machine learning runs, I don't need many fast CPU cycles for my work. Because I tend to buy low cost commodity PCs, the relative price of an increase in the "Microsoft tax" is noticeable.

If Microsoft does anything to prevent easy dual booting between Linux and Windows, then that will be the day that I stop using Windows (or at least stop buying new PCs with Windows). With the latest version of Ubuntu, I prefer Linux as a development platform even to OS X.

Wednesday, November 08, 2006

Some dissatisfaction with Ruby

I use Ruby a lot for small database tasks (love ActiveRecord!) and for using Rails for some web applications (not with scaffolding, mostly generating controllers and writing my own code).

That said, for a lot of what I do, Ruby is much more than an order of magnitude slower that compiled Common Lisp. I find myself still using Ruby and Java when appropriate, but for most tasks, I am going back to using Common Lisp. Better language, and the learning curve is not so bad (I have been using Lisp for over 25 years, and I am already up to a 'moderate' level of competence :-)

Democratic mandate: investigate corruption

Exit polls shows that 3/4 of voters favored Democratic candidates because of government corruption. I hope that the new House of Representatives lives up to its responsibilities to thoroughly investigate and act on:
  • Illegal lobbying
  • Illegal lobbying by foreign governments
  • Outlaw riders on bills in Congress: lately some obscene riders have been attached to important bills
  • Outlaw voice votes on Bills: let us always know how Congress people vote!
My sincere hope is that no single political party ever again controls both houses of Congress and the Presidency.

Tuesday, October 31, 2006

Vacation in Utah: Capitol Reef, Bryce, and Zion national parks

Carol and I met up with friends Tom and Cheryl in Capital Reef Park in Utah last week and we have been enjoying three great national parks. Here are some pictures.

Tuesday, October 24, 2006

VAR agreement with Franz

I do a lot of Common Lisp development for my commercial products. I like to develop in Lisp, start selling products compiled with Lisp, then if it makes sense, do a Java port and sell that also. I now have a VAR agreement with Franz to use Allegro Common Lisp for development and for shipping applications.

Saturday, October 21, 2006

Very good: Democracy - Internet TV Platform

A very good start: check it out.

My favorites so far are Sarah McLachlan's "World on Fire" and an Aikido training video. I like this idea: using Bit Torrent, the nonprofit Participatory Culture Foundation helps publishers distribute their content inexpensively. I keep wondering why more TV material (with commercials for profit) are also not published this way. I would like to see more Indy SciFi movies and TV shows, and Bit Torrent distribution with embedded advertisements would greatly reduce costs over traditional broadcasting.

The client software is written in Python and C and is GPLed.

Wednesday, October 18, 2006

More on personal information management

Public APIs for web portals like del.icio.us, "Google Office", Google Reader (references on the web but I have not seen it available yet), Flickr, etc. offer something special to computer scientists that are not available to computer users: the ability to "re-purpose" your own data and meta-data that happens to live on public web portals.

While there are very good systems like Piggy Bank for creating your own meta-data store (in RDF) for web sites that you visit, this requires extra work. The sweet-spot for automating the collection and use of our own meta-data and data is being able to automatically use information that you may already have for your own del.iciu.us tags, tags you have applied to RSS feed items in Google Reader, etc. Most of us use public web portals as part of our work flow, but there are definitely unexplored possibilities for customizing our own knowledge management environments.

Tuesday, October 17, 2006

Be willing to pay a small price for freedom

I just made a small donation to the EFF for helping to monitor the electronic voting machines in the upcoming election:

http://secure.eff.org/friends2006

I urge you to do the same. The Electronic Frontier Foundation is a great group that I have been supporting for years.

Be you a Democrat or Republican, I hope that we can all agree that fair elections with one person, one vote is the cornerstone of our society and government.

Monday, October 16, 2006

And the winner is...Linux Desktop!

I know that I have been harping on Operating System issues lately but due to working requirements of VPN clients, special development licenses for 3rd party tools, etc., I have been spreading my time fairly evenly between Ubuntu (Gnome desktop), Mac OS X, and Windows XP. For my work flow, Linux is just simply better except for:
  • Windows: TortoiseSVN (love it!)
  • OS X: OmniGraffle drawing program (love it even more!!) and the TexShop Latex wrapper
While OS X is very nice, I simply find myself not using stuff like SpotLight, etc. very often. I am probably a bit biased (using X Windows since 1988) towards Linux and Gnome (I also find KDE to be very good). The good thing (for me!) is that I hope that most people do keep using Windows: a honey pot for virus writers and I get a professional advantage over developers who code on Windows:-)

Thursday, October 12, 2006

More on web based office tools: Gliffy.com

Thanks to reader Marco who read my "Google Office" blog and pointed me towards Gliffy.com - a very cool online drawing program implemented with Lazlo. The interactivity of this web application is surprisingly good and the UML diagram that I made looked good both exported as PNG and as SVG. Good job!

Wednesday, October 11, 2006

"Google Office"

I have a Writely.com account and when I went there today I was redirected to what is now "Google Office": Writely and Google Spreadsheet are combined on one "web desktop". It is convenient. What I would really like to see is a good online drawing program (like Dia for X Windows or OmniGraffle for the Mac :-) I often need simple drawing embedded in my writing and I would bet that I will not have to wait too long for a web based figure/drawing functionality.

Tuesday, October 10, 2006

Human minds, programming, and the "caching problem"

When writing large software systems, rapid access to data is often important: what can be kept in memory or more slowly: processes on the same local network and on disk. In software development, we see the same effect: maximum speed and efficiently if a single person can understand the architecture and comprehend the entire system. Moving from a single developer to a very small team adds a little overhead: design notes and pencil and paper drawings turn into casual but more explicit short documents and conversation. The optimisation is minimising cost between two people talking and sharing information vs. maintaining documentation and reading time. Talking is almost always better because communication is a two way street, but if you have N developers, O(N^2) "talking overhead" is too expensive with a large N, so back to the one way street of documentation.

I like to view programming languages in terms of how they allow me to deal with complexity, keeping as much stuff in my head at once:
  • Lisp: great for building up the language from the bottom and extending towards an application domain. The new application "programming language" is higher level and the remaining part of a system is more concise code and easier to keep track of.
  • Ruby: concise, so programs are much shorter and easier to understand.
  • Java: the language does little for me as far as reducing complexity, but great IDEs like IntelliJ at least allow rapid code browsing, "who calls this" queries, etc.

Quicktime movies playing on Ubuntu Linux that do not play on Windows XP

This is odd: I installed the latest Windows XP Quicktime from Apple and hi-res movies that I exported from iMovie on my Mac will not play, but play fine on Ubuntu (I did run "Alacarte" when I first installed to get some 3rd party multimedia support). I have a shared FAT32 partition, so I was running against the same files on Windows XP and Ubuntu.

Monday, October 09, 2006

Praise for older software

I like this :-) I added the underlined emphasis:
Now that the old days are long gone and word processors come preinstalled with every machine, why should we care about this remnant of history? The answer is that remarkably LaTeX is much better suited for composing and distributing most types of documents than any other modern word processor on the market that I am aware of. Just like programming languages tend to converge towards Lisp because it got things right the first time around, so do the Word Processors tend to converge towards LaTeX.
In the last few months almost all of my writing has been done using LaTex and most of my development in Common Lisp (using another old program: Emacs). I love to experiment with new technology, but I use whatever is best for a job to support my family.

I blogged a few years ago about this: in the distant future, I wonder if people will be using ancient software that has been thoroughly tested over the centuries, is bug free, and seems 'just right' feature-wise.

North Korea. Economies of Japan vs. USA

Long term, it is bad news that North Korea has had a successful nuclear test. Short term I am more concerned about the unstable government in Pakistan with their existing nuclear weapons (General Musharraf took control 8 years ago in a military coup, has never faced an election, and is unpopular in his own country - a country with few natural resources, increasing population pressures, etc. - who gets these nuclear weapons if the Musharraf government falls?) Also, many people in the Middle East and Europe are concerned with Israel's nuclear weapons. I believe that it is time for our government to start one-on-one negotiations with countries like Iran, Syria, and North Korea. Public "negotiations" are seldom effective - we need closed door sessions with top level diplomats (private, so egos do not get in the way).

On happier news: Japan is "officially" recovered from its severe 15 year economic slump. Less happy is a comparison between the assets that Japan had to survive economic hard times that we in the USA do not have (and make no mistake, a severe economic downturn will hit us in the future):
  • Personal savings: citizens in Japan had relatively large personal savings that they could rely on for living expenses (consumer savings in the USA is close to zero, considering people who increase their debt with second loans on their homes, etc.)
  • Japan had low defense costs (the USA spends as much money on defense than the next 24 countries in the world combined)
  • Japan had healthy industrial infrastructure with modern factory equipment (the USA is way behind the curve in updating basic infrastructure like factory equipment and our road and highway systems)
  • The government of Japan did not have the huge deficits that the government in the USA has.
  • The government of Japan did not have the huge foreign debts that the government in the USA has.

Saturday, October 07, 2006

Java + AJAX : IntelliJ 6 + GWT a great combination

I plan on doing a major overhaul to our "knowledge intensive" cooking and recipes web portal including AJAX support and a better artificial intelligence recipe wizard. The portal is written in Java using JSPs and custom tag libraries.

I have actually considered re-writing the whole thing in Ruby Rails, partially for the AJAX support and partially because Rails is easier to develop with. However, after spending a few hours experimenting with the IntelliJ 6 Google Web Toolkit (GWT) plugin and wizard support, a lot of the advantage of Rail's excellent AJAX support is minimized. Both free developers from most Javascript hassles of using AJAX.

The is a short flash demo that is worthwhile watching if you are considering using GWT.

Tuesday, October 03, 2006

A bit of history, the Slackware 11 release, and software power

I downloaded parts of Slackware over a 2400 baud modem connection in 1993 - my start using Linux. So, I noticed the announcement of Slackware 11 with some nostalgia. I very much appreciate the fine work of Patrick Volkerding. (Even if I am now an Ubuntu user :-)

Software power: for me, Linux + other open source = Power

I am not talking about client side Linux, rather being able to build services using Linux and quality infrastructure software from the Apache Foundation, the PostgreSQL group, etc.

In the 'new economic era' of globalization and driving costs towards zero, Linux and open source play a huge role in staying competitive.

Saturday, September 30, 2006

Best technical writing software?

I do a lot of technical writing both because I enjoy communicating and to earn money. Recently, the AI project that I am working as architect and lead AI developer passed a performance milestone so we get more people and resources. As a result, I find myself writing more architectural documentation and doing less Lisp programming - so it goes :-)

As a computer scientist, I spend a reasonable amount of time tweaking my software development and technical writing work environments. For software development, I almost always prefer a fast Linux box with just the tools I need - no fluff to act as a distraction.

Unfortunately, my favorite writing environment is heavily Mac OS X dependent, largely because of the OmniGraffle technical drawing tool (I am addicted to using it and I highly recommend it.) So I am stuck on a Mac for writing most of the time. I also strongly prefer Latex over Microsoft Word or OpenOffice.org for writing (much more efficient use of my time!) While I am very happy using Emacs+autex for Latex work, there is something a little better: the free TeXShop Latex working environment for OS X.

Monday, September 18, 2006

Persistence for object oriented languages vs. programmer efficiency

I am about 4 months into a project using a very expensive object persistence mechanism (Franz Lisp AllegroCache) that almost automatically wraps Common Lisp CLOS classes for automatic persistence and B-Tree indexing of as many slots as you want to tag as indexed. As is sometimes is the case, here commercial software tools save time and effort. There is a very interesting open source project for Common Lisp (Elephant) that does something similar by using BerkleyDB or a relational database as the backend - it looks good, but it is not yet an out of the box solution.

For Java work, although I was once a fan of Hibernate, I try to use Prevayler instead: if you add new instance variables to the end of class definitions you can add to your object model without breaking your persistent storage - a neat trick, to be sure.

When it comes to the best programmer productivity using object relational mappers, I personally think that Ruby Rail's ActiveRecord wins hands down - with the slight cost that you design database schema instead of class models.

Friday, September 08, 2006

JRuby

There has been a lot of buzz over Sun hiring Charles Oliver Nutter and Thomas Enebo (two core JRuby developers). Certainly a fine thing for people who use both Java and Ruby. My hope is that they do a lot of work on Tomcat/WEBrick/Rails integration for hybrid JSP/Rails web apps.

I have been using both Ruby and Rails a lot in the last year, and have not missed Java too much. That said, an efficient Rails platform on top of a Hotspot JVM sounds good. My quick experiments with JRuby have not been totally without problems, but with Sun's obvious motivation to get a first rate Ruby environment running on the JVM, I expect things to get better. The smooth integration of Java classes in an interactive Ruby IRB shell environment is fun.

Apple just lost a sale - Steve Jobs is no longer on my good guy list

I am serious about this: Steve Jobs is the largest shareholder of Disney stock and on their board of directors. Disney (ABC) is running a commercial free $40 million dollar production that is from what I have read a fictionalized account of 9/11 that incorrectly blames just about everything on the Democrats. The Apple music store is distributing this bit of political propaganda for free and both Apple and Disney are targeting this fictional miniseries as an educational resource for kids. Let the mind control begin...

I was just about ready to order a new Mac laptop. It was a close call to getting a better Linux system instead. I am so angry over ABC's political partisanship that there is no way I am going to be a customer of Disney or Apple if I can avoid it.

I used to have good feelings about Apple: I wrote the chess program that they gave away with the very early Apple IIs and I did very well financially on a commercial artificial intelligence tool for the Mac that I wrote in 1985.

Thursday, September 07, 2006

Is the upcoming ABC whitewash of 9/11 events a failure of public trust?

I have already sent personal correspondence to Disney CEO Bob Iger urging him to show some real patriotism on this issue. As a country, we must learn from our mistakes, and I think that a whitewash is not what our country needs.

ABC like other broadcasters use the public airwaves - if they broadcast biased news, then I think that Congress should investigate their use of the public airwaves. The Democratic Senate leadership is already threatening ABC with legal and legislative actions.

I hope that everyone sees this for what it is: the fall elections are coming soon, and right wing republicans will stoop to anything to cling to power. Shame on them. Perhaps they should take an American civics class? It seems to me that many Republicans have lost sight of traditional American values.

What should owners of Disney/ABC stock think of this? One possible scenario: the Republicans lose control of Congress, and suddenly illegal corporate acts start to get punished... How might this affect Disney stock holders?

Sunday, September 03, 2006

Disconnect between thinking about a problem and programming

The Subtext programming system has been getting some buzz, and I think that this is worth while if it makes us think about the disconnect between thinking about problems and writing software to solve these problems.

While state of the art IDEs like IntelliJ for Java and VisualStudio for .Net languages provide a comfortable working environment, I must say that both Java and the .Net languages are poor choices for many programming tasks.

Scripting languages like Ruby and Python help this thinking vs. programming disconnect in one important way: for small programming tasks, very short programs are sufficient and we can keep track of both problem task thinking and programming.

What about large projects? There are two good alternatives in programming languages: Common Lisp and Smalltalk:

Common Lisp lends itself really well to growing your own application specific language (using macros if you like, and functions). Once you build up an application specific language, a lot of the complexity of even complex programs goes away. Even more importantly, domain specific languages should help close the gap between thinking about problem solutions and programming these solutions.

The downside of Common Lisp is that while Emacs based IDEs are effective environments, even with add on code browsers, I find exploring large Common Lisp software projects to be tedious.

Smalltalk implementations generally have great code browsers because the simplicity and regularity of the language make it easier to automatically process the structure and semantics of code. Smalltalk blocks and closures, like in Ruby, allow many concise coding tricks - shorter programs are easier to understand and modify.

Startups

Techcrunch has a great Paul Graham interview on startups. Graham: "make something people want". Good advice :-)

I have been more than a little frustrated this year: I have my own startup idea that I am keen to pursue but I have had both interesting and educational consulting gigs and it is difficult, at least for me, to walk away from good work.

Politically and socially, I love the idea of small agile groups of people taking market share away from large corporations - turn the economy of scale upside down by leveraging agility.

Wednesday, August 30, 2006

Linux vs. Windows and OS X: it is the economy that will be the driving factor

I had to laugh a bit this morning while enjoying my coffee: I was reading responses on Slashdot to Tom Yager's optimistic article on Apple's market share growth. While I am a Mac fan (I am writing this blog on a Mac and I have been writing Common Lisp code on a Mac since 5:30 this morning), I think that so many people miss the point of operating system dominance in the future:

Step outside of pure technology for a minute, and think about the global economy and were the buzz is right now: the US is educating a very small fraction of engineers and scientists as places like China, India, Europe, etc. The largest growth will be in what are now poorer countries, but expect a more level playing field in the future. There is a good reason why high technology companies are increasingly setting up research labs outside of the US: less expense and a good supply of highly motivated and educated talent.

Using Linux in developing countries makes the most sense: computer science students get free access to source code and end users can run on much cheaper hardware using free software. As more creative work is done outside of the US, scientists and engineers will naturally use what they have used in school: Linux.

Long term, I expect to see an upswing in technology in the US: with the amount of perceived (fake) wealth in the US (from people pulling $400 billion a year in equity from their homes for a higher lifestyle, etc.) many young people simply lack the motivation to work at science and engineering in school when they see lucrative careers in real estate and other fields that require training but not too much education. Who knows when the crash in the US economy will come, but when it does occur it is likely to make the "comfortable" recession of 2001 look like a picnic. Usually success requires education and hard work, and in the future when we in the US are climbing out of what I think will be a very long economic downturn, I also believe that poorer economic conditions in our country will motivate both student and workers. During the upcoming economic slump in the US I would not be surprised if Linux becomes more popular with end users for the same reasons that Linux is gaining in popularity in developing countries right now: families trying to hold on to their homes and meeting other mandatory expenses might look favorably at $200 Linux PCs.

Saturday, August 19, 2006

Open source, free, and commercial software

Slashdot linked an article about Eric Raymond's support for proprietary binary Linux drivers. I think that he is partially right, but I would like the freedom to choose whether to use binary only drivers on my Linux boxes.

As a software developer, I look at commercial development tools as a way of life. While I find the free Ruby + Eclipse + RDT + Radrails combination to be just fine for Ruby development, for other work the commercial tools are just a cut above.

I very much enjoy using Franz Lisp, but it is expensive: Franz has been in business for 20 years continually improving its one product (Franz Lisp), and it shows. I am using Franz right now for a large project - the licensing costs are a good investment for my customer. I hope to restart my knowledgebooks.com business next year (I have set it aside the last few years because the consulting market has been so hot) and I am going to try to justify to myself the costs of Franz because that is what I would like to use.

Another great commercial development environment is Cincom VisualWorks Smalltalk. While licensing is also expensive for VW, Cincom offers a good deal for developers (revenue sharing) that eliminates up front sticker shock - a good thing for develpers wanting to grow a new business.

The point that I am making is that writing software is expensive in time and resources so sometimes it makes sense business wise to invest in expensive tools, and sometimes it does not.

Friday, August 18, 2006

I started a new blog just on AI theory

Artificial Intelligence Theory will probably be a very low volume blog. I am planning on using it more in an essay or white-paper writing mode. One thing that I will probably write about, in addition to more practical topics like probabilistic networks and reasoning systems is a long time interest that started in 1976 when I bought Bertram Raphael's great book The Thinking Computer: Mind Inside Matter: Computer Go Programs. I spent a lot of free time in the late 1970s writing what I am quite sure was the world's first commercial Go playing program Honnibo Warrior. I am still very interested in trying to develop some cross between NGRAM style hashes for local board positions and efficient storage mechanisms like AllegroCache to solve some tasks that if not strictly required by a Go program, would at least be more like the way human experts play Go: in other words, figure out how to implement the temporal and spatial memory in the human neocortex, but in software, and efficiently.

Writely has started accepting new accounts

I was especially interested in Writely because I wrote something similar, but simpler myself (KBdocs.com). I tend to use a lot of computers, and I wanted to have a simple online word processor for my own use. KBdocs.com took me about three evenings to write (a really easy project, because I used Kevin Roth's JavaScript Cross-Browser Rich Text Editor).

In any case, Writely seems to be well done, although it did throw an error during one operation. I expect that it will soon be excellent. I have become rather addicted to Latex recently - even more so than in the past, and with a handy subversion server, web based word processors are less of a draw to me because it takes a few seconds to grab working document files. That said, web applications like GMail, flicker, Picasa Web Photo site, Netflix (excellent!) and others take up almost all of my non-working time with computers.

Monday, August 14, 2006

Indie Game Development, AI in games

Slashdot has a discussion on Microsoft's "free" PC and XBOX 360 game development kit. There are also other good low cost alternatives for Indie development like Torque.

I spent a few years doing AI game development at Angel Studios (2 Nintendo games, prototype networked PC hovercraft game, and a VR system for Disney) and although I have been working more on 'practical' AI applications since moving to Sedona 7 years ago, I still have a keen interest in gaming and AI for games. A few years ago I thought of setting up a cooperative game development community for fun and maybe some profit, but my consulting business keeps me too busy, at least for now. Another thing that keeps me from making a large investment in an independent game making co-op is thinking how much money was spent writing commercial games at Angel Studios: teams with dozens of professional artists, programmers, a few musicians, etc. are expensive. That said, game AI programming is great fun and surprisingly difficult.

Thursday, August 10, 2006

OpenCyc 1.0, AI in general

I noticed on Slashdot that OpenCyc 1.0 has been released. I spent a short while reading comments and realized how different my own views on AI are from many Slashdot commentators.

To me, AI is all about writing software that makes decisions given uncertain and sometimes contradictory information. AI is about modeling problem domains and working both within that model and changing the model as new information becomes available. AI is about using problem domain models to provide human users with useful, interesting, and unexpected results by matching a model of a user's inquiry. AI is about solving the game of Go: the branching complexity of the game is so great that having perfect information is not enough.

So, a tool like OpenCyc is not really a match to my personal view of what AI development is: Cyc and OpenCyc try to define ontolological knowledge of real world common sense knowledge. I appreciate decades of hard work, and I have myself spent many hours experimenting with earlier versions of OpenCyc - so kudos for the 1.0 delivery.

Still, I tend to view "AI problems" as being problems restricted to narrow domains but still made very difficult or impossible by uncertainty, missing information, and time or memory constraints on algorithms.

Monday, August 07, 2006

How much more productive is using Latex rather than Word or OpenOffice?

I had to start writing some software documentation this afternoon and also start a separate set of research notes. I am not sure why, but it seems like I get more work done (quicker) if I grab a Latex template file and just start typing - saving generating a PDF for viewing until the end of each work cycle. There does not seem to be any overhead at all for using Word or OpenOffice, but I still have the feeling that work goes faster just blasting in plain text, with a little markup.

I am too busy with consulting work to spend much time on it, but I started a new for fun writing project using Latex and some custom code for inserting both program listings and the output from running the program examples - it is clear to me why Latex + my custom code is more efficient for programming texts using than using a word processor. BTW, my new 'for fun' writing project is "AI Programming in Ruby".

Sunday, August 06, 2006

Globally unique identifiers

I really enjoyed listening to Tim Bray's talk on developing the ATOM specification on ITConversations. He made a lot of interesting points, but the one that resonated most was ATOM's requirement for a globally unique identifier for every feed and entry. With more syndication, we all see lots of duplicate material. Examples of duplication can readily be seen on rojo.com (used to be my customer, and I still enjoy their site a lot) and technorati.com: we end up with many URIs that refer to the same material.

It is possible to write software that detects duplicate feeds, but comparing two articles is not an inexpensive operation, and when comparing a very large number of feeds, the O(N^2) runtime is painful. I have experimented with much a less accurate algorithm: hash NGRAMs of articles and check for duplication using a hash lookup. I have found that this gives poor results - at least in my experiments. If you do partial matching of NGRAMs, you are back to O(N^2). (If anyone knows a good way to handle this, let me know :-)

Globally unique identifiers help solve many duplication problems, makes it easier to implement container relations, and in general ATOM just seems to be a better and more scalable platform than RSS 2.0 for complex new applications.

Saturday, August 05, 2006

Yes languages affect our thoughts, even in programming

The Sapir-Whorf hypothesis poses that our native language affects how we think. Computer programming languages also strongly affect how we think about, design, implement, and maintain code.

I was working on some tricky code this morning that builds on some Common Lisp CLOS class libraries. The new code is really orthogonal to the existing functionality and it seemed like a poor idea to merge the new in with the old, especially since the old codebase will probably be used as-is for a while. I decided to start a new module (as defined by physical file organization) that added the new functionality to the existing classes as generic methods. The new module stays small, and anyone needing to use the original codebase is not confused with extra code for functionality that they do not need.

In Ruby, I like to do the same sort of thing: have different modules (as defined by physical file organization) where new orthogonal functionality is added by defining new methods to existing classes in new file modules.

In Java (and other languages), you can always use Aspect-oriented programming (AOP) to add new orthogonal behavior to class libraries, but, to be honest, I dislike AOP - this is not the fault of AOP per se, but because I have only used AOP with Java.

Friday, July 28, 2006

Criticism of non-dynamic languages

For the last year most of my work has been using dynamic programming languages (Ruby and Common Lisp). I have written about this before but given that programmers are properly trained/educated, dynamic languages simply are more efficient when measured against programmer time. I think that the reason is fairly simple: dynamic programming, meta object protocol, Ruby's missing method, etc. all make it possible to solve some difficult problems with relatively few lines of code.

I have made a good living using the Java platform (starting with Java 1.0 beta) but I think that it is time to move on. Sure, I am still likely to take on interesting work even if it has to be done in Java, but I think that both Java and the .Net platform languages missed the boat on programmer productivity.

I have a few comments on Ruby vs. Common Lisp also: the beauty of Ruby is that it is a simple language to learn and to master. It is difficult to find programmers who are willing to make the effort to master Common Lisp and CLOS. Too bad, but that is the way it is. Personally, I still like Common Lisp a lot because I have already invested decades (part time) learning Lisp and Common Lisp blows Ruby away performance wise. BTW, my positive comments on Ruby and Common Lisp largely also apply to Smalltalk.

Tuesday, July 25, 2006

Dissent: the finest of American traditions

Amazingly, our politicians and the media industries try to paint the picture of dissent as being unpatriotic. I recommend re-studying American history! You have seen this for yourself: criticize Bush and you are unpatriotic. Criticize poor amateurish military decisions made by the radical neoconservatives and you are unpatriotic. Wanting to save our military infrastructure and personnel for real future threats to our country: labeled as "cut and run" rather than as "smart".

This perversion of American ideals is made possible by the massive consolidation of ownership of the news media: under the Bush administration, the FCC has failed to do its job by letting a few very large multi-national corporations buy up control of most of the media that the average person sees.

If you have 28 minutes, I can recommend this video on the state of US media compared to more uncensored news that people in most other countries get to see. I think of myself as a conservative, so a few things in this video rub me the wrong way, but it is still a valuable wake up call to the dangers to democracy of tightly controlled news media. Highly recommended!

Wednesday, July 19, 2006

Secrets to living a happy life

My wife and I watched a DVD movie "The Secret" this evening. While it was very good, I think that I can do better -:)
  • Follow Joseph Campbell's advice to discover what you really love doing and make that your career: follow your bliss
  • Count the blessings in your life every day while minimizing the time you spend on negative thoughts
  • Take full responsibility for your life for a good feeling of self empowerment
  • Give up on trying to control other people and put your energies into your own thoughts and behaviors
  • Concentrate on the current moment with minimal time planning for the future and less time regretting things in the past

Good point: disinformation and the Semantic Web

I wish that I had gone to the AAAI conference this year. I am keenly interested in the application of AI techniques to the Semantic Web, and Tim Berners-Lee gave a keynote speech largely on the Semantic Web.

After Berners-Lee's talk, Peter Norvig in the question period posed the problem of people publishing fake data in much the same way they try to cheat to increase the page ranking on their web sites. I had not thought of that problem, and it is a tough problem to deal with: what happens to trust mechanisms when some people actively try to fake the meta data on their web sites? While I was walking to lunch with Norvig a few years ago, I brought up a related problem: assume that for narrow domains of discourse (e.g., political news, financial news, etc.) that you could largely automate the creation of RDF from natural language text on web sites. I personally believe that this is achievable right now, with a lot of effort. The problem that I posed at lunch was (besides the technical challenges of dealing with potentially trillions of RDF triples) the problem of dealing with lots of conflicting information while factoring in different levels of trust.

Tuesday, July 18, 2006

Why I have not been blogging about the latest war in the Middle East

I find it difficult to write about something when both my intellect and emotions condemn people on all sides of a conflict. My contempt is not for the many Lebanese and few Israeli civilian casualties, or for any of the people who simply want to live their lives and raise their kids.

My contempt is for both the brutal Israeli government and for the shitty, sometimes evil, and stupid leadership (both governments and terror organizations) of their adversaries. I think that the leaders on all sides of this conflict are pathetic - worthy of disgrace and shame.

The slaughter of civilians has got to stop. Killing civilians is a war crime. Get the leaders of all sides of this conflict before international war crimes tribunals, give them all fair trials, punish those who are found to be guilty, and see if the level of violence decreases. I bet that it would. As a world, we have to come together and stop this shit. I believe that history is at a crossroads: either we work together to clean up our collective acts and move into a great future, or we "stay the course" and fail in our responsibilities to our children and grandchildren.

The UN has not been a very effective organization because of the veto power in the security council. If voting were adjusted to be more in line with populations of countries, with no veto power, I think that UN resolutions would have more effectiveness. We need a world wide forum and enforcement agency to make it clear to world leaders what actions are not acceptable to the vast majority of people living on our planet.

Is India blocking my blog and all others on blogspot.com?

I just read that Indian ISPs were given a list of domains to block. Too bad, really. I have been to India, and very much liked it there - an interesting place with warm and friendly people. They still have problems of corruption (my driver was shaken down by police twice the last day I was there), and you can read Arundhati Roy's non-fiction books on global corporate powers working with corruption in the Indian government and other governments if you would like to better understand "how things work in the world". (The root of this corruption is in multinational corporations that used to be US companies - so I am not picking on India here)

In any case, I hope that either this is not true or that the Indian government will quickly realize its mistake and keep their internet access free. It is well publicized that China's government blocks many foreign domains, but as a conservative (yes, I strongly dislike Bush and his radical neoconservative advisors - but I still consider myself to be conservative) I have deep problems with the Chinese government anyway (the people in China have my very best wishes however - it is just their government I do not care for).

Saturday, July 08, 2006

Good concert

Tonight was fun: our friend Laurie Riley headlined a concert tonight in Sedona. She played a double harp, mostly Celtic and South American themes. (Laurie has an Italian Greyhound Bungie who is almost a mirror image of our Italian Greyhound Kito.)

Quality of life, technology, and ecology

I had a good talk with my friend Geri yesterday while walking our dogs around the neighborhood: she and her husband Mark had seen "An Inconvenient Truth" the night before. This all got me thinking about why so many people can blind themselves to what I think are obvious problems: ecology (or lack thereof), government over spending, the consumer debt bubble, etc.

Part of the problem is that many of us simply do not want to confront problems when they can be put off until the next year or simply dumped on the next generation. In the US, I think that many people suffer from the disease of materialism: the substitution of material things (or in some cases simply the addictive desire for more 'stuff') for basic human pleasures of family, friendships, enjoyment of nature, etc. There are many new technology/business opportunities that could help local economies and be ecologically friendly: passive heating and cooling, low power computers, more fuel efficient vehicles, technologies for growing food efficiently very close to where people live to reduce transportation costs, etc.

BTW, the solution to global warming (or at least improve the situation) is simple: increase the tax on the use of carbon based fuels while decreasing sales and income taxes. Make it economically viable to create new technologies and industries that reduce our energy and environmental damage "foot prints".

Politically, my solution will never happen in the US because their are too many entrenched corporate interests making profit on the current energy industry.

Tuesday, July 04, 2006

Windows Genuine Advantage

Advantage to whom?

As a software developer, I get a lot of use out of keeping a PC that can also boot Windows XP (you know the drill: have to use customer's Windows only VPN software, want to try Windows applications, etc.)

I was fortunate, my Dell(*) Ubunto Linux/Windows XP PC has been having no problems, when booted to Windows XP, getting software updates - but some people have not been so fortunate. I believe that Microsoft has a potential customer relations problem, but it is a mild problem - but with a long tail: customer frustrations with a product and vendor do add up, and incur a long term cost to the vendor.

Most consumers are stuck with Microsoft, unless they buy a Mac - but the cost of a Mac is so much more than PCs with similar performance.

(*) No, I did not actually purchase a Dell - a very nice customer ordered one for me as a gift (they buy a lot of Dells, and the discount cost to them was not too much money).

Monday, July 03, 2006

21 years with Emacs; streamlining writing/publishing with LaTex

I have been using computers for a long time (in the early 1960s my Dad got access for us to a timesharing Basic system on the Darpa Net), but I only have been using Emacs for 21 years :-) LaTeX and TeX are also old but great software, but I am fairly new to LaTex - I used it a few years ago to write the first version of my free web book Loving Lisp. The Saavy Programmer's Secret Weapon but had not used it again until this last week when I started to setup a more streamlined writing environment (more about that later).

I still think that IntelliJ is the best Java development environment, but I am trying to not do so much Java anymore - this year I have been developing mostly using Common Lisp and Ruby. Emacs is a natural fit for Lisp development, and is good for Ruby (but Ecplise+RDT is a bit better). It feels strange to still be using the same software (sort of) that I have been using for a good part of my life!

Just in the last few days, I have been finding Emacs recently to be the best environment (that I have found) for working with LaTeX - AucTeX was a 1 minute install in Ubuntu and I liked the way that it gives limited preview right in an Emacs buffer, and it takes only a few keystrokes to run LaTeX and get a real preview.

I have a good reason for getting back into into LaTeX: I love to write but I am not as enthusiastic about going with the established publishing industry anymore (I have written 14 published books, with another in progress, so "been there, done that"). I am much more enthusiastic about web publishing and alternative print on demand publishing outlets because a lot of things that interest me enough to write about are niche markets. In order to more easily write more (but much shorter) programming texts, I want to streamline and automate generating high quality text with embedded programming examples and equations. It took very little time this afternoon to set up an automated system for embedding program listings with generated output in LaTeX. Saving lots of "busy work" time lets me spend more time writing.

Friday, June 30, 2006

Incredible what a few lines of Ruby code will do

Ruby, with great libraries like ActiveRecord and Ferret let you solve problems with just a few lines of code. I had 4 database tables that I wanted to index all fields of each row, and enable a plain text search that would quickly point me back to the table name and row index. The indexing takes about 20 lines of code and took less than 10 minutes to get working:

class CreateIndex
def initialize
@index = Ferret::Index::Index.new(:path => './search_index')
ActiveRecord::Base.establish_connection(
:adapter => 'postgresql',
:host => 'localhost',
:username => 'postgres',
:database => 'test_database')
process_class(Item)
process_class(Plan)
process_class(Procedure)
process_class(Visit)
@index.close
end
def process_class the_class
the_class.find_all.each {|obj|
doc1 = Document.new
doc1 << Field.new("text", obj.attributes.values.join(' '), Field::Store::YES, Field::Index::TOKENIZED)
doc1 << Field.new("class", the_class.to_s, Field::Store::YES, Field::Index::NO)
doc1 << Field.new("id", obj.id.to_s, Field::Store::YES, Field::Index::NO)
@index << doc1
}
end
end
This would take a lot of code in Java, Common Lisp, etc. Unless my customers specifically ask me to use another programming language, I just about always use Ruby now.

30 minute lesson on the Middle East

I saw this video linked from Reddit this morning

It is a 30 minute 'mosaic' of news broadcasts from Palestine, Israel, Iraq, Iran (all soccer coverage), Jordan, and Tunisia.

Personally, I take all news broadcasts (especially in my own country :-) with lots of skepticism (everyone pushes their own agenda), but still seeing this 'mosaic' helped me to get more of a feeling for the Middle East.

One warning: I suggest that you skip over the first 2 minutes of the broadcast - sad and bloody footage of a family killed on a Gaza beach.

Here is the Google Video blurb on this video:
The Peabody Award-winning Mosaic features selections from daily TV news programs produced by national broadcasters throughout the Middle East, translated when necessary into English. Link TV is an independent national network providing Americans a global perspective on world issues and cultures, now available in one out of four US homes.
PS. am I the only one who finds it strange that a show on Comedy Central tends to have some of the most unfiltered news style interviews?

Thursday, June 29, 2006

New version 350 of PLT Scheme

Here is the download page

New features include an easy option for generating standalone applications that have all dependencies bundled in and a just in time compiler. Cool stuff.

I prefer Common Lisp for application development, but Scheme is a great language and PLT Scheme is one of the best free development kits - includes lots of useful libraries, web application and web services support, etc.

Saturday, June 24, 2006

A good free Ruby book/tutorial

For the last couple of years, Ruby has been my favorite programming language (I still often use Common Lisp for performance reasons and Java when it is requested). I just saw a link to a neat little free PDF web book on Ruby that looks good for recommending to people who want to learn the basics of Ruby in an hour or two. The guy who wrote this has also written a plugin to VisualStudio 2005 for Ruby development.

So, how are they making money on this?

I just spent some time uploading more travel pictures to my Flickr collection and uploaded to Google Video several short videos clips that I took in Africa and India several years ago:
Samburu dancers, Kenya Africa
Samburu school children singing, Kenya Africa
Elephants, Kenya Africa (30 seconds before a male elephant charged us)
Crocodiles being fed chickens, Samburu Lodge bar, Kenya Africa
Dancers in Kochin India

While I appreciate the free services, where is the profit? I do understand the value in collecting information on people, but I wonder if some web services like Google Video and Flickr will always be loss-leaders.

Friday, June 23, 2006

More work combining Ruby and Common Lisp

I am doing a lot of coding using both Lisp and Ruby for my current project. I am finding interop between the languages to be especially easy because of the dynamic nature of both languages. When I use REST style calls I can dynamically create classes and instances just from the XML so changing classes in one language does not break code in the other.

Monday, June 19, 2006

A simpler, more directed Microsoft under Ray Ozzie

Ozzie has been fairly public about his simpler approach to software development: simpler product with clear goals and on-time delivery to market. I think that this is just what Microsoft needs.

Another thing that Microsoft needs to do is to go on a subscription based business model for Windows and Office. I have written about this several times in the last two years: higher software complexity caused by adding features that most of us probably do not want.

I use Windows (in addition to OS X and Linux) in my work, and the thing that I want is stability and security. If Microsoft received a small yearly license for Windows use and a larger license fee for Office use then they could just concentrate on quality and simplicity of use - not adding features to (try to) force software upgrades.

Everyone wins.

Saturday, June 17, 2006

Meta object protocol in Lisp and Ruby

One thing that I like about Common Lisp and Ruby is the ability to examine class definitions, etc. at runtime. I have several model classes in a Common Lisp application and I want to implement a web services API for my application that in some cases returns model objects to the requester.

I wrote a very short utility function today that takes any class instance looks up all of the slot names, and then gets the slot values. I output to an XML stream.

I don't have to manually change any code to marshall any of my classes to XML if I change the model class definitions.

Comparing Google's Picasa Web to Flickr

I find the Picasa photo organizer to be almost perfect, except for not having a Mac version. I set up a gallery of my travel pictures on Picasa Web a few days ago. The first thing that struck me was how easy it is to export folders to the web portal. You get 250 megabytes of storage for free, and can purchase much more for $10/year. I uploaded my pictures in medium resolution (roughly 1024x778) so I only used about 1/5 of my free storage.

I have had a Flickr photo site for a long time and I plan on keeping both sites, at least for now. (I link to both Picasa Web and Flickr on my main web site).

I think that the web interface for managing photos is better for Flickr, but Picasa Web is also very easy to use and was only publicly released this week - I am sure that it will get even better. I requested a Picasa Web invitation early in the morning the day it was released and I received an invitation within a day. I don't know what the waiting time is now. Google may want only a relatively small number of test users to initially test the system.

The Picasa Web site has a great feature for viewing folders of pictures: I think that the Javascript on the page preloads the next photo because when you click the "next" arrow the next photo appears instantly as long as you do not click the "next" arrow too quickly. The slideshow is very well done, and shows larger images than the Flickr slide show. From a photo viewer's perspective, I like the Picasa Web system a bit more than Flickr.

It will be interesting to see if Picasa Web will be profitable by selling extra storage space and hard copy prints, or if they will add advertisements to the Picasa Web pages to generate revenue.

Sunday, June 11, 2006

Different doument types, different work flows

I keep everything that I do in a subversion repository. Even though subversion can diff binary files like Word documents or OpenOffice.org ZIP file enclosures for documents, I still like as many of my design artifacts to be plain text as possible. Now, I do keep lots of binary files in repositories, especially when working on book projects, but I do have a strong preference for text files.

I also like my design artifacts to look good, even if I am the only person who sees them. Two highly recommended tools are AbiWord and OmniGraffle because their default file formats are plain XML text files.

I admit that disk space and network bandwidth are close to free now but I still like to keep a project directory small. By using design tools that have small file footprints, most projects (source files, build scripts, tests, and design artifacts) are small and tidy.

Friday, June 09, 2006

Saving time with Ruby and ActiveRecord

I am working on a project that has many disparate data sources, and before I can do the interesting AI part everything needs to be normalized into our object models. Usually, this would be a mountain of work, but I am finding that using Ruby scripts with the ActiveRecord library is saving lots of time. I am basically taking advantage of both the dynamic nature of Ruby and the dynamic ORM functionality of ActiveRecord to cut the amount of required code (compared to say Java) by a large amount.

Ruby on Rails has a deserved reputation for saving time on web application development, but you should really consider ActiveRecord a separate part of Rails that can be used standalone.

Yes, the world is probably a safer place

I think that compared to the cold war era the world is now probably a much safer place. Think about this: as much as the Bush administration for political reasons wants Americans to be scared (easier to control) of terrorist threats, compare the possible danger of terrorist attacks with a cold war-style nuclear war that would probably kill most of us.

Sure, the world is a dangerous place, but I think that the situation is improving even with obvious recent setbacks due to the clumsy policies of the Bush administration.

On a similar topic: have you actually read the text of what Mark Malloch Brown, the British Deputy UN Secretary-General said? Not much at all, and in my opinion definitely not an attack on the American people that John Bolton (US envoy to the UN) has been claiming. Bolton is a neoconservative who has been critical of the UN for years. I also have issues with the UN, but I believe that it is still a good investment - dollars paid for some peaceful results.

I think the question is: why should US policy try to sideline the UN? I think the answer is simple: we are currently the sole military super power in the world and some people believe (misguided, I think) that continued militarism is the best path for long term security and prosperity. I happen to have the exact opposite opinion: security and prosperity will come from strong diplomatic relations with all countries in the world, a smaller and much less expensive military presence in the world, more investments in our own educational and industrial infrastructure, strong policy of energy conservation, and securing our own country.

Thursday, June 08, 2006

A sad day for the U.S.

Another nail in our economic coffin: U.S. loses again in competitiveness against the rest of the world. Largely along party lines, House Republicans shafted the people of our country, to the benefit of a very few corporations that are probably no longer even American companies - most large corporations have by now registered off shore to limit taxes and liabilities. The "net neutrality bill" would have helped the U.S. stay competitive with the rest of the world, but I guess that the soft money contributions ("bribes") of corporations wanting to limit the utility of the Internet to American entrepreneurs and businesses for some short term gains paid off.

When a large corporation bribes ("soft money campaign contributions") members of Congress, I wonder what their rate of return on "investment" is. What ever happened to doing what is best for our country?

In my opinion, this is corruption, plain and simple.

Tuesday, June 06, 2006

Wow! Google Spreadsheet web app: very cool!

I have not spent too much time with the new spreadsheet web app but I did load a medium size Excel file, and everything went well.

The real thing here is shared editing with built in chat for collaboration.

I live in a remote area, so things like video conferencing, Skype conference calls, and now shared editing and viewing of spreadsheets all help reduce the business and technical costs of working remotely.

Sunday, June 04, 2006

I am on Microsoft's side on this one

OK, the sky is not falling - I'm allowed to side with Microsoft occasionally: why should Adobe be allowed to prohibit Microsoft from adding PDF output to Office when Apple and OpenOffice.org can use an open format (PDF)?

I was so angry with Microsoft last year over their position on open document standards like Open Document Format that I sold my Microsoft stock (yeah, like that hurt them). I still dislike what I think is Microsoft's business model: keep adding features that few people want, force upgrades, mess people up with incompatible file formats, etc.

I have said this before: Microsoft should operate on a subsciption model: charge users $25 per year for Windows and perhaps $75 per year for Office. They could play nice with file format standards. They could stop adding features and just produce stable products.

Thursday, May 25, 2006

New PowerLoom site

Thanks to reader Vinodh Das for pointing this out to me: the PowerLoom web site has been updated and as one of the developers told me, PowerLoom is now released under an open source license. PowerLoom is a great system - if you are interested in AI, logic, reasoning systems, etc., then check it out.

Interesting product: AllegroCache

I have been evaluating AllegroCache for a customer for one of their tasks. AllegroCache provides a metaclass that allows programmers to make CLOS classes persistent with very little work. AllegroCache is similar to Berkeley DB B-Tree but is implemented in Lisp and scales to very large problem sets. Individual class slots can be tagged to be indexed for fast lookup and search.

It is possible to write something like AllegroCache in a dynamic language like Common Lisp. The obvious idea for me is: do this in other dynamic languages like Ruby! The job would be easier in Ruby assuming that Ruby is already linked with the open source licensed Berkeley DB libraries. I already use Ruby's DBM disk-based hash libraries a lot, but being able to search on multiple class attributes would be great. AllegroCache supports great query functionality, so implementing something close to AllegroCache's functionality in Ruby would probably be at least a couple month task. One problem with this idea is that Franz Lisp with AllegroCache is really targeted at high end, high performance systems - Ruby is simply much slower that natively compiled Common Lisp, so an AllegroCache port to Ruby would not be as performant.

Sunday, May 21, 2006

Dealing with Knowledge Artifacts that are still in paper form

When my wife and I lived in Solana Beach California my home office wall had about a 20 foot wide set of bookshelves. When we moved to Sedona, my home office shrunk to a 10x12 foot room. I also went from an ocean view to a mountain view - the change in views is fine but I miss the library shelf space! Since I consider myself, like many people, to be a "knowledge worker", I thought that it would be fun to talk about how I deal with storage problems for physical artifacts like ACM and AAAI journals, books, etc. Please send me your ideas via email, and I will add them to my list here.

Fortunately, most journals are also available online, and articles can be copied for personal use. Before throwing out old journals I take a quick look for articles that might be of use in the future and I do a web search including the journal name and the article name. Articles in the ACM Portal or AAAI Digital Library (for example) can be copied locally for personal use by members after logging in. I used to keep journals, in paper form, almost forever but now having just high (possible) value articles stored on my local file system and indexed for search is good enough. I usually just save plain text, but if figures look especially useful I save them also.

Books are more of a problem. When we moved 7 years ago, I reduced the size of my technical library from about 400 books to about 150. Now when I purchase new books, I try to get rid of an equal number as gifts to my local library or sell them at a local used bookstore. A few times a year I go to reference a book that I have let go, but in general, I think that my technical library might be more useful with fewer books because I can find things very quickly.

Anyway, local storage works well for knowledge artifacts that other people create - usually storage and archival for personal use is allowed. For stuff that I produce (except for my published books that are owned by my publishers), I prefer public web storage.

I find that del.icio.us is a fantastic resource for organizing bookmarks for both knowledge artifacts on the web and for fun stuff that I might want to find again.

For fun stuff: I used to keep travel and family photographs on my KnowledgeBooks.com web site, but now I keep the best pictures on Flickr. I am tempted to start storing video clips (and I have some great stuff like dancers in India and Africa, etc.) on video.google.com when I have time.

The Da Vinci Code

My reward for a long day yesterday hacking Lisp code was a night out with my wife and friends to see "The Da Vinci Code". What a great movie! I thought that with very few exceptions the movie moved at a fast and interesting pace and was a sweet story.

The movie had a great scene of the Council of Nicea that in 323 AD decided what would be in the Bible - a very short scene of people haggling over what was to be in the Bible, but this scene set the stage for a story of an alternate view of the possible life of Christ.

I find it unfortunate that some people can not just take this move at face value as a work of fiction. I read an article this morning interviewing many Christian religious leaders. I agree with the leaders who looked at this movie as an opportunity for dialog and not as a threat to their beliefs. My personal belief is that spirituality is more valid and much more important than rigid religious dogma. Although I respect all religions I consider my self to be a Christian, but to me what is important is Christ's teachings: peace, love, connectiveness between all people, compassion for others, and the big one: you shall not kill. Really, these are the messages of all great religious and spiritual leaders of all religions. I don't even want to mention his name, but last year one of the more popular "religious leaders" in the U.S. was openly advocating the assassination of a leader of a foreign country. OK, the 'word of the day' is "hypocrisy". One of the many great things that one of my grandmothers (wife of a Methodist minister) taught me was to look at people's actions and not just listen to what they say.

Wednesday, May 17, 2006

Will Java JRE be installed by Linux distros by default? Is it too late for this to have a large impact?

I wrote my first Java book using a version 1 beta JDK so I have been in the game for a long while. I also downloaded (2400 baud modem?) enough of Slackware Linux to boot in 1993. Soon after I then made one of the best investments ever, and for a very small fee bought a set of floppy disks with Slackware, X, and the gnu tools.

Linux and Java for server side development and deployment have been reluctant lovers for about a decade. Forget about wide spread client side Linux Java development because Java was not installed automatically - except for SuSE Professional.

Finally, Sun is tweaking their licensing policies and it looks like automatic JRE installation with many distros is going to happen. Is it too late to make a huge difference? I believe so. If this had happened 5 years ago and if technology like Apple's contribution of multiple JVMs sharing memory for libraries had become a standard Linux install item, then the Java and Linux worlds would be very different today. Too bad, really.

Google Web Toolkit

I have been thinking of re-writing the first version of our cooking and recipes web site in Rails largely for the AJAX support. Since looking at the Google Web Toolkit code examples this morning, I will probably leave the site alone except for adding AJAX support for user editing of their 'ingredients on hand' and using the AI recipe modification agent.

The concept of developing in pure Java using your IDE of choice and then performing automatic Javascript and HTML conversion is brilliant.

Sunday, May 14, 2006

The Lisp community needs to do this more often

One of my gripes with Lisp is that there is not an easy to use package installation utility like, for example, Ruby gems. Common Lisp does have ASDF, but I get a lot of "misses" trying to install and experiment with Lisp programs using ASDF.

The continuation based UnCommon Web project looks interesting, but has been a pain to install all of the dependencies until now. Marco Baringer has packaged UCW and all of its dependencies in a single tar file so for me the install was very quick, and I could experiment with UCW painlessly. Thanks Marco!

Friday, May 12, 2006

I am back home

I was fortunate in my surgery: the surgeon started off arthroscopicly and determined that he did not have to do a bone graft after all. The entire procedure was done arthroscopicly. Anyway, I am feeling pretty good. I do need to keep my shoulder immobilized for several weeks. It is good to be home!

Wednesday, May 10, 2006

Surgery Thursday - I will be offline for a few days

I am having my shoulder operated on tomorrow - a result of my bad fall while hiking a couple of months ago. I have a broken bone and two detached tendons that won't heal up without surgery.

The surgeon is going to start arthoscopically but he may have to do a bone graft to the affected area in which case he will switch over to conventional surgery.

Tuesday, May 09, 2006

Integrating a semantic network with a reasoning system

For a long term AI project, I am using Common Lisp and CLOS to model customer application specific nodes in a semantic network. This morning I worked out the non-obvious (to me!) bits for integrating my stuff with the Loom reasoning system by deriving Loom concepts from my CLOS classes. Cool stuff!

Monday, May 08, 2006

Why the ultra-rich should stop supporting Bush

Bush brags that the ultra-rich 'elite' are his 'base' and with giant tax cuts for the rich and policies that favor corporations he used to be correct. However, I believe that an unstable world is bad for business. I also believe that the Bush administration's policies have made the world a less safe place for people and for protecting long term profits and prosperity for corporations. I expect to see the ultra-rich, owners of corporations, CEOs, and "classic" conservative republicans start to at least in their actions acknowledge that Bush is bad for business and turn their back on him and the high-stakes gambling neoconservatives (they had their chance to set policy, rolled the dice and lost - the whole world has seen their failures -- lets hope that they have the class to retire gracefully instead of trying to cling to power).

In the U.S., with the looming real estate crash, I believe that owning stock in multinational corporations is probably a good investment and a good way to diversify savings and retirement accounts. My fear is that the ineffective policies of the Bush administration will hurt the economy long term, including corporate profits. I would rather see us investing in educational and business infrastructure than alienating much of the world with very expensive military excursions that probably reduce our safety, not increase it.

Tuesday, May 02, 2006

I sometimes forget how fast compiled Common Lisp is

Java and Ruby are usually my staple languages for my work. I am working on an AI system for a new customer and I started prototyping everything in Ruby - lots of progress in a short time, but for some things that I want to do Ruby is just too slow so I have separated out the most time consuming calculations and I am writing that module in Common Lisp. Compared to Ruby (and even Java), test cases, etc. in compiled Lisp seem infinitely fast - surprising since for a lot of things like hash table lookups, etc. most of the time is spent in library routines anyway.

I used to have a strong preference for writing entire systems in the same language, but really, it is easy enough to break up systems into modules written in different languages.

$19 for a more productive environment

I just made a great improvement to my working environment in my home office. I received a FedEx package this morning with a video KVM switch so that while I am using my main writing and development PC (a good Linux box that I can boot to Windows XP as needed) that uses two LCD monitors for extra screen real estate, I can push a button and one of the monitors flips to the view for my trusty old Mac dual G4 tower. A nice setup for someone like me who needs to use 3 different operating systems.

Excellent: ABC's streaming TV shows

I checked it out this morning while enjoying my coffee: http://dynamic.abc.go.com/streamin.

The quality is not quite what you would get from cable. Sometimes you barely notice compression visual artifacts but with any high spacial frequency stuff it is noticeable. However, actor's faces are rendered clearly. Try it yourself and see if you like it.

I bet that the bandwidth costs are high for ABC because they are not taking advantage of UDP multicast or IPv6 multicast technologies. While the commercials are limited and not annoying it would be good to have an option of paying (perhaps?) $0.50 for a anytime one-time view of a TV show without commercials.

Monday, May 01, 2006

What happens that major news is not reported?

Stephen Colbert took an opportunity to harshly criticize the U.S. news media and poke a little fun at President Bush last weekend. Here is the complete text transcript. Here is a short clip on YouTube.com. I believe that this is very newsworthy, but there has been what looks to me like a total news blackout of this event except for the original live C-SPAN broadcast.

I so totally agree with Colbert's rip of the U.S. news business - our generation does not seem to have great news people like Edward R. Murrow (took on Joseph McCarthy for ruining many innocent lives) or Walter Cronkite (for too many things to mention).

For people living in the U.S., it is almost mandatory to use services like news.google.com to access and read a wide variety of news from around the world - otherwise you simply will not know everything that is happening. When you do read things in the foreign news that are either self-censored in U.S. news or badly under-covered, please make the effort to inform family members, friends, neighbors, people at work, etc. Share knowledge and information!

It is a bad thing only getting to see news that the corporate owners of our news media want you to see.

BTW, I am no fan of George Bush (although I did vote for him in 2000), but I liked the way he did the skit with the Bush impersonater right before Colbert's presentation. Bush also seemed to take Colbert's criticisms OK.