Older blog entries for Kay (starting at number 59)


Some months ago I published the first version of a little open source game called Destroids for webOS (The OS of the Palm Pre and the Palm Pixi smartphones) and I'm still improving it weekly. It's a simple Asteroid-like game where you fly a spaceship through an asteroid field and shoot asteroids and UFOs.

At the same time Palm started the Palm Hot Apps contest where app developers can win $100,000 (For the first rank), $10,000 (for rank 2-21) or $1,000 (for rank 22-221) in two categories (Free apps and paid apps). For the time the contest is running I placed a widget on the right side of my blog which shows the current position of Destroids. If you own a Palm Pre or Palm Pixi and you like the original Asteroids game then download Destroids now and make me rich.

More information about Destroids can be found on pre|central.net

Syndicated 2010-04-25 16:04:18 from K's cluttered loft

Java and the StartSSL CA certificates

Again and again I forget how to import the StartSSL CA certificates into Java. Everytime when I switch to a different workstation or install a new Linux distribution I can no longer access my StartSSL secured server with Maven. Then I have to search for a tutorial and for the download locations of the CA certs. Very time-consuming. This must stop once and for all. So I wrote a small script which imports the certs into the currently active Java installation.

Steps to install the certs:

  • Download import-startssl script.
  • Make sure JAVA_HOME environment variable is set correctly.
  • Run the import-startssl script.

The script runs the keytool program of Java with sudo so you have to enter your password to give it root access. If you have JSSE installed then the StartSSL CA certs are also added to the jssecacerts keystore. The script imports the root CA certificate and the four sub CA certs (Class 1-4).

If the script does not work for you (Maybe because you are using Windows or Mac OS X instead of a real operating system) then you can at least read it for instructions how to do it manually.

Syndicated 2010-04-11 13:20:52 (Updated 2010-04-11 13:33:36) from K's cluttered loft

CSS box model hacks

Consider that you want to display some DIV inside another DIV where the inner DIV always fills out the outer DIV completely:

<style type="text/javascript">
  #outer { width: 256px; height: 256px; }
  #inner { background: red; height: 100%; }
<div id="outer">
  <div id="inner"></div>

Width is already correct because the default value of auto keeps the inner DIV at maximum width. So only the height:100% style is needed for this scenario. But what if the inner DIV also has some padding or a border? Then the percent values will not work because according to the W3C box model the border and the padding is added to the width and height. So the inner DIV gets too large. In standard compliant browsers (Even in IE7) this can be solved pretty easy. IE6 needs a little hack. Read on...

Continue reading "CSS box model hacks"

Syndicated 2009-11-17 10:20:34 from K's cluttered loft

Ubuntu Karmic workarounds

Ubuntu 9.10 Koala Karmic is released and I immediately installed it. May be this was too early because it has lots of issues. So I'm going to collect some workarounds here which were necessary on my notebook to get Karmic running smoothly.

Continue reading "Ubuntu Karmic workarounds"

Syndicated 2009-11-05 06:57:27 (Updated 2010-07-29 17:45:30) from K's cluttered loft

Stop supporting IE7?

As already written in my Stop supporting IE6 article I hoped for IE8 supporting media specifiers in CSS @import statements. The benefit would be to lock out IE6 and IE7 from seeing the CSS definitions without using proprietary IE conditional comments. Fortunately Microsoft really did it, they support this syntax in IE8!

So if a website is going to drop support for IE7 (which may be a good idea because IE7 is still a pain-in-the-ass when it comes to web standards) then it can be done like this:

<style type="text/css">
  @import "common.css" screen;

Syndicated 2009-08-21 06:07:03 (Updated 2009-08-21 06:21:48) from K's cluttered loft

Using Microsoft's Browser Test VMs in Virtual Box

If you are a web developer like me then you most likely must test your web pages in at least three incarnations of the evil Internet Explorer. And if you are a linux user like me then you will most likely not use native windows installations to do this. And if you are a Microsoft hater like me then you may have no Windows installation CDs at all. So how are you going to test your stuff in Internet Explorer?

Fortunately Microsoft is so kind to provide some Virtual Machine Images for testing purposes. Unfortunately they are only available for Virtual PC but with some work they can be used in Virtual Box as well. In this article I will describe how to get these images running on Ubuntu Linux 9.04.

Continue reading "Using Microsoft's Browser Test VMs in Virtual Box"

Syndicated 2009-06-12 18:07:00 (Updated 2009-09-04 12:53:55) from K's cluttered loft

Events in Java (Second try)

Well, I'm not that satisfied with the Signal/Slot system I described in a previous article. The reflection part of it makes me itch. So I gave it a second try...

First of all lets summarize the problems with the listener pattern:

  • Two classes (The data container for the event and the listener interface) must be created for each event.
  • At least three methods must be created for each event (Register, Unregister and Fire) in each class which is going to fire the event

So it's simply too much boiler-plate code and the goal is to put as much as possible of it into some library classes without losing any type-safety and without using reflection. I'm going to describe my solution in this article and again I will use the nonsense example of a citizen which drinks some beverage and a Big Brother which monitors it.

Continue reading "Events in Java (Second try)"

Syndicated 2009-06-02 22:14:00 (Updated 2009-06-02 22:30:31) from K's cluttered loft

Events in Java

Java has no integrated event system but most classes in the Java Runtime uses the Listener Pattern for this. This pattern is pretty powerful and (when using Generics) completely type-safe but in the end it is still pain-in-the-ass. Think of a class which wants to send five different events. You have to write five listener interfaces and write at least 15 methods (five register methods, five unregister methods and five fire-event methods) and collections for all the listener objects which are registered. Depending on the type of events you may want to write five event classes which are used as containers for the event data. Lazy programmers therefor put all five events into the same listener interface so they only need one register/unregister/fire tripplet. But this requires the event receivers to implement all five listener methods even if they are interested in only one of them. So some genius invented the Adapter classes which already provide empty listener methods which can be extended by the event receiver. The whole thing is pretty annoying because it's so complicated to implement and to use.

So lets take a look at a different approach...

Continue reading "Events in Java"

Syndicated 2009-06-01 13:23:00 (Updated 2009-06-02 22:23:56) from K's cluttered loft

Guild Wars on Linux

Because I'm currently playing Guild Wars pretty often and I was too lazy to switch between Windows and Linux when I switched between playing and working I installed lots of development software on Windows so I can work there, too. But after Windows crashed and shredded some of my source files while doing this I decided to ditch Windows completely. So I installed Guild Wars on Linux (using Wine) and after some configuration changes it works well enough. It never runs as fast as on Windows but it is fully playable.

Continue reading "Guild Wars on Linux"

Syndicated 2009-05-23 11:01:08 (Updated 2009-05-25 11:17:43) from K's cluttered loft

Lazarus TActionList

In Delphi I used TActionList with lots of TAction items to implement the various actions in an application. These actions can then be linked to menu items and buttons. An action can have an OnUpdate event handler which is responsible for activating and deactivating the action depending on the current state of the application. This is a very useful feature which is also available in Lazarus but unfortunately it is somewhat broken in current Lazarus version (At least up to daily snapshot 20081231) because the OnUpdate event handlers are not called correctly for actions which are only linked to menu items. This bug is already reported and hopefully it will be fixed soon. But for now I have created a little workaround for it.

Continue reading "Lazarus TActionList"

Syndicated 2008-12-31 18:23:47 (Updated 2009-01-11 10:09:05) from K's cluttered loft

50 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!