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

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.

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.

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

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

I updated this weekend

I spent an evening or two a year ago setting up 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 compute

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,, Flickr, Google Documents,, Google Reader, Picasa web photos, and 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 o

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

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!

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 :-)

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 deve

'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

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 g

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.

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

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.

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.

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.

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.

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.

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.

More on personal information management

Public APIs for web portals like, "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 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.

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

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:-)

More on web based office tools:

Thanks to reader Marco who read my "Google Office" blog and pointed me towards - 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!

"Google Office"

I have a 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.

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 h

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.

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 r

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 t

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.

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.

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 for writing (much more efficient use of my time!) While I am very happy usin

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


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 198

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 Disne

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


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.

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

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

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 efficient

Writely has started accepting new accounts

I was especially interested in Writely because I wrote something similar, but simpler myself ( ). I tend to use a lot of computers, and I wanted to have a simple online word processor for my own use. 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.

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 surp

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 earli

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

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 (used to be my customer, and I still enjoy their site a lot) and 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 know

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

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 maste

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 fe

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 technic

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

Is India blocking my blog and all others on

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 con

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, tech

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

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

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 = => './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 = doc1 <<"text", obj.attributes.values.join(' '),

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 Comed

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.

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.

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.

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.

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 relati

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

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 que

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.

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.

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

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

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

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 Chri

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,

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.

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!

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!

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.

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!

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 in

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

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