08-Jun-2008 14:00 | Halting State

“Halting State” is a funny nerd-book by Charles Stross.

The setting: In an online role playing game a bank is robbed. Three people, a cop, an insurance accountant - both women - and a game developer investigate the case.

The cop and the accountant do not really understand what is going on. The cop uses goggles that overlay the real world with a virtual reality providing all sorts of police information, but she doesn’t understand online games. The accountant plays some kinds of online games, but doesn’t understand how they work. The nerd — the game developer — takes the job to guide the accountant through the maze of online RPGs. He’s a Python 3000 programmer and the way he thinks and acts is really nothing new to software developers. The book contains some insider jokes probably only people working in the software development industry will understand.

Each chapter is written from the perspective of one of the three protagonists. It’s a bit unusual, because the author wrote the book in the second person. So it’s somehow like reading a text adventure with the difference that you as the reader cannot take any influence on the action.

At the end the book somewhat looses it’s drive as the author tries to tie it all up, but it is a fun book and definitely recommendable.

12-Dec-2007 23:09 | Osmorc: OSGI support for IDEA

I have published the first release of my third IDEA plugin called Osmorc. Osmorc is a plugin that enables development of OSGI based appllications in IDEA.

Currently only some basic elements like Export-Package, Import-Package and Require-Bundle are supported, but those are the necessary building blocks for OSGI applications. Making those concepts work with IDEA’s module system, which doesn’t allow exporting and importing of specific packages, was a prerequisite for any further development of this plugin. I think I found a pragmatic way of doing it that should work in most cases.

On the home page of the plugin I’ll post more information about the plugin and how it works during the next days.

01-Oct-2007 11:22 | Movable Type 4

I’m now on my way to update my blogs from Movable Type 3.33 to Movable Type 4.01. The basic update was fast and easy. My templates still work and the sites can still be viewed after a total rebuild. At first the commenting functionality was broken, but that problem was resolved after the initial update through the help of the SixApart support department. So now the basic update is done. I’m currently investigating how and what new features of MT 4 to use in my blogs.

One of the features I already enabled is the possibility to log into my blogs with an OpenID for commenting. So if you have an OpenID, you can use it here to comment and don’t need a TypeKey-account to comment on my blogs. OpenID is a big topic and I’m currently looking into setting up my own identity provider. As soon as I’m done with that, I’ll post more about OpenID on this blog.

Besides this change that is apparent to the readers of my blogs, there’s also lots of changes only visible to to the blog owner. MT got a new polished UI, which I like very much. The UI of MT 3 looked somehow outdated. MT4 uses AJAX where it makes sense. For example the entry being currently edited is auto saved regularly. So it won’t get lost when somehow my Internet connection breaks and I have to re login after a time.

MT 4 has also syntax highlighting in the template editors and it discovers all module templates used in a template and provides a menu of them for direct navigation. There is no autocompletion support in the template editors, but maybe they’ll add it for MT 5 ;)

There’s also a new WYSIWYG editor for blog entries, which I don’t use because the generated HTML-code look horrible, but fortunately my preferred Markdown with SmartyPants is now integrated into MT. The editor used for typing in entries with Markdown offers some Markdown specific features like link creation and image insertion. That provides part of the convenience of the WYSIWYG editor with good HTML-code produced by Markdown.

08-Jul-2007 19:06 | Comparison : Java and K

OK, I know nothing about the programming language K. So I won’t criticize K itself. What I want to talk about is the comparison of Java and K.

I don’t get it why people always think that if they need fewer lines to write a program in one language than in another that the said language is better than the other one. The comparison shows fairly clearly that this is no good metric for comparing programming languages. While the Java program takes up 37 lines of code and the K program only one, the K program is far worse to understand since it’s one line of curly parenthesis, other special characters and some variables. I can learn all those special characters for all those special functions I need only rarely. Do I want to do that? No! I prefer to know that a class contains a specific kind of functionality and that I can find those functions with the autocompletion support of my IDE if I need them.

I’d also surmise that refactoring the K program would be somewhat more difficult than refactoring the Java program. I prefer the Java program because of its better readability and extendability.

K has probably its fields of use where it’s far better suitable than Java. Definition of mathematical algorithms is probably one of them, but that’s not the point here. I have no need for a comparison of two languages that have totally different uses.

Please stop those “I can express this in X in 1 line of code where Y needs 100 lines of code, so X is the better language”. It’s boring.

06-Jul-2007 09:46 | TiddlyWiki

TiddlyWiki is a wiki contained in one page. You can download an empty TiddlyWiki and put it anywhere you want — on a USB stick for example. It doesn’t need any database. It’s only one HTML page with lots of JavaScript and CSS. You simply add and edit tiddlers (that’s what the parts of a TiddlyWiki are called). You can even change the layout and the colors of the wiki by editing specialized tiddlers. Once you press the save button, TiddlyWiki writes itself back into the file from which it was loaded.

TiddlyWiki makes use of AJAX. So there are no flickering reloads. It all looks nice and works smooth. You can also install plugins to extend TiddlyWiki.

TiddlyWiki is a useful application when you just need some scrapbook and don’t want to use a server side wiki. From a technical viewpoint the fact that it writes and changes itself is also quite interesting.

04-May-2007 19:38 | FileBrowser

I released my second plugin for IDEA named FileBrowser. As the name suggests it is a plugin that allows browsing of the local hard drives on a computer. The idea for this plugin came into my mind some two months ago when I realized how really inconvenient it is to open files that are located outside of an IDEA project with IDEA.

Besides using IDEA as a Java IDE I also use it as a general editor for HTML, CSS and XML files. Before developing FileBrowser I used to create a new IDEA project for each web site I wanted to edit or I would use the “Open file” action in IDEA’s file menu to open external file. All that was really inconvenient.

So I came up with FileBrowser. I created it in my spare time over the last two months. It was fun developing it and exploring new features of IDEA’s Open API.

It provides drag and drop support with other applications and contains a small favorites management system.

12-Mar-2007 19:50 | NaviActionPad 0.7

After 3 months of inactivity — at least concerning this plugiin — I have made a new release of it.

While using it whenever I worked with IDEA, I noticed that it behaved a bit unpredictable. The problem was that it always took the currently selected PsiElement as the context for any further action. So you could place the cursor on a class name that appeared as the type of a variable in a declaration or in a call to a static method of a class. After invocation NaviActionPad would recognize the class as the currently selected element and would show the contents of the package the class belongs to. Nice feature, but not necessarily what one wants. When you edit a class, that class is your current context. So when you invoke NaviActionPad you want to see the method the cusor is in and not the class of some variable. Now NaviActionPad checks whether an editor is focused and takes the element of that class the cursor is in as its context. It may be a method, a field, some inner class or the class itself, but it won’t be something currently out of scope.

There’s also a new IDEA action usable to invoke NaviActionPad in a new manner. Since NaviActionPad is now so much more predictable, you can directly go to the list of available actions by pressing CTRL+F11.

Also take a look at the updated web site naviactionpad.beeger.net.