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.