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

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

IDEs: best of breed vs. 'good enough'

I spend about half my time developing in Ruby and half in Java. For Java development, in my opinion nothing is as good as IntelliJ - I love it! I am still in the exploring mode when it comes to Ruby development. When using OS X, I sometimes use TextMate and I like TextPad on Windows - both inexpensive and very useful. That said, when I am dealing with larger programs, I find Eclipse and both the Ruby and the Rails plugins to definitely be 'good enough'.

Actually, as a 'good enough' platform to build other platforms, Eclipse is the 'best of breed' :-)

In the last few years, I have used Eclipse (with suitable plugins) for Ruby, Python, C, C++, and Prolog. Eclipse is also very good for Java, but not the best.

If there is one thing that I like best about Eclipse it is probably the subversion and CVS support.