Changing the world through software

Computing for the environment and Computational Linguistics

Leave a comment


I’ve been deciding which sessions to attend at OOPSLA 2006. There’s a lot going on so, unfortunately, I’m going to have to miss some intersting ones. Ther Onward track is particularly insteresting but i want to achieve a balance.
Here is what I have decided:


Brenda Laurel Designed Animism: Poetics of a New World

Onward!: Gabriel Conscientious Software

Onward!: Baniassad The Geography of Programming

Linda Northrop Scale Changes Everything

Virtual Machines

Panel: GoF Design Patterns: Beginnings and Futures


Guy L. Steele Jr. A Growable Language

Onward!: Simonyi Intentional Software

Onward!: Knöll Pegasus: First Steps Towards a Naturalistic Programming Language an area I am very interested in.
Joshua BlochHow to Design a Good API and Why it Matters

Practitioners Reports including some talks realted to Domain-Driven Design

Philip Wadler Faith, Evolution, and Programming Languages: from Haskell to Java to Links

Panel: Convergence of XP and SCRUM

Panel: Young Guns/OO: The Next Generation

Software Engineering


Leave a comment

Dates and java

java.util.Date is not perfect and a lot of the original methods have been deprecated yet people persist in using these methods. java.util.Calendar should be used (no that java.util.Calendar is any great shakes either).
I’ve seen a project in which the joda-time library was referenced, using Date.toString() and then using String.substring() to pull out the day month and year! If you see code like this on your project, buy the author a copy of ‘Effective Java’. There is no excuse for not using the API available to you correctly.

Leave a comment

Deprecation and bypassing apis – calling code you shouldn’t, clearly defined APIs

It is a joy to work with a clean, clearly defined API. As an API evolves some methods (or classes) will be deprecated over time. Often the method or class will not beremoved for compatibilty reasons.This does not mean that it should continue to be used. Of course, the deprecation should be documented and i Java the @deprecated javadoc tag is the perfect way to do this. It should explain why the method/class was deprecated and the preferred replacement.

Of course not all classes in a libaray form part of its API. Various conventions are followed such as *.impl.* or *.internal.* packages. Sometimes this hint is ignored by devlopers using the API and this inevitably leads to broken code when a new version of the library is released. One project which makes good use of the *.internal.* convention is the eclipse platform but some plugin developers insit on ignoring it!

One possibility is to use AspectJ to highlight design violations. Adrian Colyer has an example of something like this, using an Architecture aspect in Simplifying Enterprise Applications with Spring 2.0 and AspectJ .

Leave a comment

Domain Specific Languages and Natural Language

There seemed to be a lot of interest in Domain-Specific-Languages at OOPSLA 2005. Combining some of these ideas with my interest in Natural Language Processing and ideas from literate programming leads me to think that DSLs should me natural-language-like. One Domain Specific Language that has gone this way is Inform7, which I came across in Howard Lewis-Ship's blog entry Beyond domain specific languages. There is a white paper here.

It seems that the distinction between programming languages and natural language will become more blurred over time.
Brian Marick has a couple of interesting blog entries on sentence-style tests and wireframe tests. Tom White has an article on literate programming with jMock.

Leave a comment

Natural language refactoring tools

Brian Foote in Thomas Jay Peckish II on Refactoring wonders about a prose refactoring tool. That's something I've been thinking about for a while. Some interesting ideas were mentioned in this entry in the KOffice GUI design competition. If I find the time I would like to tackle some sort of semantic word processor project built on eclipse RCP. Other implementation possibilities would be and AbiWord plugin. With the addition of document understanding, a word processor would become not just a 'word' processor but a sentence processor and, eventually, a thought processor.

Leave a comment

Emacspeak – The Complete Audio Desktop

I first came across emacsspeak several years ago and was reminded of it over the weekend when a piece of rock hit me in the eye while out climbing. Luckily no real harm was done and I escaped with just a scratch. As the name suggests it is based on emacs but it doesn't just speech-enable emacs. There are currently 150 applications supported allowing the visually impaired to do anything from using google maps to programming in java and ruby.