Sunday, November 20, 2005

Science Fiction - "Bring the Jubilee"

"Bring the Jubilee", by Ward Moore, is an alternate history of the United States. In this version the South had won the war of Southron Independence and by the 1930s the United States is a backwards, nearly a third world country.

The hero of the book is a man named Hodgins McCormick Backmaker. When the story starts he leaves his family farm in Wappinger Falls, New York and goes to New York City to seek his fortunes. He describes himself as "lazy boy" who is only interested in reading books - a skill that is not particularly useful in the 1930s United States.

In this altername history, airplanes have not yet been invented and the most common mode of transportation is horse an buggy.

In any case, Hodgins finds work in a New York bookstore and spends his time studying the War of Southron Independence. Over the years he becomes an expert on the topic and is invited to join a Haggershaven - a college of sorts, in which resident scholars can pursue their work. This institution had been founded by a Confederate officer who decided to settle in Pennsylvania after the the Southern victory at Gettysburg and the end of the war.

At Haggershaven Hodgins meets Barbara, a brilliant physicist, who just happens to invent a time machine. As a historian of the war, Hodgins travels back in time to Gettysburg to witness the battle.

As you may expect his presence changes the course of events and the rest is history - our history.

Sunday, November 06, 2005

Technical - "Beyond Java"

"Beyond Java" is a book by Bruce Tate, on possible future of programming after Java. The author was inspired to write this book after the following experience. He and a friend built a web based application for a startup company using the current set of Java tools and frameworks (Spring, Hibernate etc). The project took about two months, with about 20 hours of work a week dedicated to it. Then, on a lark, the two guys decided to build the same application using Ruby on Rails framework. To their surprize, they built the same application in about 4 evenings of coding.

Even given the familiarity with the problem, the productivity speedup was amazing - not to mention that the Ruby application performed better. This experienced was a wake up call for the author, not to be too comfortable with his current tool set and to consider what else might be coming up from the non-Java fields.

Besides describing the above experience the first part of the book covers some problems that exist with Java and Java based tools and frameworks. For example, the fact that the basic types in Java (int, char etc) are not full classes leads to all kinds of ugliness and unnecessary complexity in Java APIs. Ironically features like these helped Java become so popular among the former C++ and C programmers.

The other main problem he sees with Java is that the frameworks and tools build around Java have become too complex. One reason is that Java is now used in many large "enterprise" systems - where this complexity is needed. However, in so doing Java has left behind those who do not wish to build "enteprise" size systems. Just to write a simple application that retrieves data from database and shows it in a web page, requires several frameworks, each of which needs to be configured in its own flavor or XML. That's why PHP and Ruby on Rails are so popular.

Following all the complains, the author provides some possible answers of what the future may be like. He believes that more dynamic languages (like Ruby) are the future. In fact he dedicates a chapter the to Ruby on Rails framework and another to "Continuation Servers" and Smalltalk (in particular he discusses the Seaside Smalltalk continuation server). "Continuations" are feature of may functional programming langauages (although they are present in Python, Ruby and Smalltalk) which allow us to invert the stateless model-view-controller approach to writing web applications into a more natural way of programming (i.e. ask for some input, wait until it comes, process it and display output).

The book is fairly short - I read it online using my O'Reilly Safari subscription. You may not care about Java that much, but if you are interested in the future of programming this book presents some intriguing possibilities.