woensdag 17 december 2008

Smallworld

My profession is building GIS systems (Geographic Information Systems).
For this we use Smallworld, a tool containing a language (Magik) and a database.
Smallworld is one of the market leaders in the GIS world for utilities and communications, it is of a different breed from competitors because it is a proprietary solution. Often we have to defend ourselves why we are different. Of course we are working with other solutions, but for the large scale solutions (in utilities and telecommunications) they do not impress.
Even the latest solutions of competititors of Smallworld do not impress, while being written in the hottest languages using modern spatial databases, the new solutions do not impress.

Why does Smallworld impress: It is dynamic, It is Smalltalk under the hood.
The system has deep reflection and can be modified at almost every level. The agile character of the language (modifying the system while running) makes working together with the customer pleasant. Often a new feature is developed with the customer sitting aside. There is almost no specialization in developers, software engineers do the database administration. So we can develop rapidly and with great ease in small teams.

Most of the competitors are using static languages, one would expect that these languages would excel in performance over Smallworld. Performance is a big issue in the utilities and telecommunication because the system should cope with large amounts (millions) of geographical objects. But even there Smallworld impress. Recently a project with one of the main competitors of Smallworld has been stopped; one of the reasons: the system did not perform.

Why does Smallworld even impress in performance? Dynamic languages are considered to be slower. But the reason is because Smallworld is build in a dynamic language. Gilad Bracha (who was responsible for the Java Language and Virtual Machine Specifications) has said something about this: "For optimisation, more is known about a program written in a dynamically typed language at runtime than is known about programs in statically typed languages at compile time". In static GIS systems it is often very hard to find out what is the behavior of the application. It is very time consuming; people can spend days to find out the cause of an error. The opposite is true in Smallworld, we likely solve the problem fast and often in the situation (the image) where the problem occurred. And as you can inspect and change the system while it is running, you are able to change the design, improve it in short (interactable) interations. This is the reason why Smallworld has an elegant design. Again a reason for good performance: Efficiency stems from good design, not good coding (Robert Glass, Facts and Falacies of Software Engineering).

Because most of the( GIS) world is not dynamic we have to defend why we are different. Too less is known in de Smallworld world about the successes of the dynamic applications, this was even true when Smallworld was a just startup.
Gartner recently has changed mind about Smalltalk, the comeback they predict can be positive for Smallworld as well. We need to follow the other dynamic languages (Smalltalk being the first and prominent one). We can learn from them and keep confident about our future and our strengths.

zondag 6 juli 2008

My First Information System

I once build my first Information System without knowing that it was an information system and even I didn't know at that time what information systems where about.

That information system was created by me during the mathematical introduction course on my secondary school; there we had to learn that math was different from the calculation lessons from the primary school. We learned to apply math on every day subjects.

The system that I build is a great example to tell people about the work I do for a living: building Information Systems. Although the system is very simple information system it has all the properties.

During the introduction course we had to help the people of a travel agency to help them selecting the right destination for a holiday. Different people have different requests about what their holiday destination should look like, it is hard to find the right destination considering the choices of the customers. We had to help them, we build a tool for them.

For this we had a stack of cards, each card had information about a certain destination. The properties of the travel destination where holes punched in the card, using a scissor we opened the hole depending on the existence of property.

I have reproduced the travel agency system and took some pictures from it. I hope it will become clear to you. (the cards are just an example and do not necessary contains valid data)
This card contains the properties of the travel destination "Pieterburen". This is a small village close to the sea, so the hole for the Sea property is opened. There is also a child garden, so the hole there is opened as well. As Pieterburen is a Dutch village there are no mountains (that hole is closed), also this destination lacks a swimming pool and there are no woods over there.









One card isn't that interesting, only one destination to go to. We created a stack of cards each having another destination. We had to look through several travel guides to find the real properties of the destinations. At last we had a stack of cards

So now we had a stack of cards with opened an closed holes. That does not help that much when selecting destinations. We had to make a query tool.


The query tool here is very simple: Just put a pencil through a hole and move it. The cards that fall off the pencil have that property. The once that are still on the pencil don't have that property. I have made a photograph of the selection: Mountain.
Hanging on the pencil are the items that have no mountains (Pieterburen is one of them) On the table the rest is lying, the items that have mountains (Luxembourg is on top of that stack)


Why this is a good example of an information system?
It has all the properties of a information system: there is the data (the card stack), a data entry tool (the pen, paper and the scissor) and a query tool (the pencil).
The system is in fact a very simple computer, able to do boolean selection (select if it has a property). The tools in this system are in fact so simple that it needs smart operators to do a query. Question: How do you select destinations that have mountains but lack a child garden? If you know the answer you may work in the travel agency :-)

After my secondary school I studied computer science, and most of you will think its all about computers. But that isn't true: it has all to do with structuring information and building the tools around it. For this we need to understand the business needs, only then we can build the right tools for you: we like computers but only if we understand your business we love to program the tools around it.
This example clearly shows that a good information system needs good tools (programs) around it otherwise you need clever people to work with the system.

Also this example shows why you need to prototype your application, many travelers are demanding (they want to have this and that). In the current version, these destinations are the cards falling of the stack, so the operator has to collect these cards every time by hand do a next query (or the smart operators will use two pencils) In the next version the cards should be negated: the cards that will hang to the pencil will fulfill that property, making selections easier.

Of course I do not advise customers to use a tool described here. But I like the simplicity of it; in my work I like to use the simple tools to solve your complex issues (see my previous post).

I wonder what was the first information system you ever build?

vrijdag 27 juni 2008

Year of Smalltalk

Since long I have seen a future for Smalltalk. The openess of the language, the simpicity of the language that enables us to solve and understand complex problems.

Others see the future as well:
Rob Vens has written a nice article about The Future of Smalltalk.
Randal Schwartz explains on webdevradio why Seaside (A web framework build in Smalltalk) will be your next web framework.

If you want to see the future running on your machine: download it now. The future has supported and free versions.