Loading....
Recent Article links:

Category 'projects'

This section of my website contains some updates on projects I have been working on. Some projects that have webpages floating around on other places on the web can be found in the left bar. These projects have special sections:

* Blosxom – Static blogging (to a site that doesn’t support CGI) with Blosxom
* Dvdauthoring – My attempts to build my own DVD set using only freely available tools, mostly on Linux
* Dvdanimenu.pl – Generate animated DVD menu’s on Linux
* Evolution Plugin: Mailing List Actions – The bounty to write a mailing list actions plugin for the Evolution e-mail reader
* Evolution – The bounty to write NNTP (newsgroups) support for the Evolution e-mail reader
* Home Cinema – My home cinema setup: TV-out, booting directly into Freevo, and remote controlling with LIRC
* Klaverjassen – Klaverjassen for your mobile phone
* Kronolith Search – Search support for the Kronolith web-based calendar application
* Lovecalc – You know you need it…
* Picligs – Picture ligatures: a font with “smart characters”
* Wie Is De Mol? – Software for the great Who Is The Mole? game
* Y4merge – Software to merge multiple YUV4MPEG streams into one

Django iflt, ifgt template tags

In Django, one has the ifchanged template tag that can be used to render content only when some loop variable has changed. I did a small extension of this by implementing the ifgt and iflt block template tags, that render their blocks only when some loop variable has increased or decreased.

Continue reading

Master’s thesis: final version

And here’s the final version of my Master’s thesis! Also, a shorter version of my presentation is here: slides, handout, handout (print).

Master’s thesis!

My Master’s thesis colloquium for Mathematics is tomorrow! Abstract:

Abstract. Given tuples of SL2-matrices, one can look at which functions in their coordinate ring do not change when we simultaneously conjugate the matrices: these are called the invariant functions. Our interest in this topic is motivated by the fact that these tuples occur as the so-called “monodromy group” of certain linear differential equations.

We will look at these invariant functions from three different perspectives. First, we employ classical invariant theory to find the structure of the space generated by these invariant functions. Next, we use geometric invariant theory to give a geometric interpretation of this invariant space. Finally, we place the results in the more general setting of representation theory by looking at the structure of the space of matrices as a SL2-representation.

Interesting, huh…

Anyway, some preliminary stuff: presentation, handout and thesis. The final versions will appear later.

Fixed points in a random permutation

In looking at the results of the Beer Test 2009, I wondered how much better than chance we were able to guess which beer was which. In other words, if for all beers one just does a random guess (with no double guesses), how many correct answers would one expect to have?

Continue reading

iPod audio jack broken? A $5 fix

After working quite well for some years, unfortunately the audio jack of my iPod Video broke down some time ago, only giving sound in one ear. Luckily, you can solve this for under $5 by buying an adapter to plug into the iPod’s connector and installing the Rockbox firmware on the iPod.

Continue reading

Finding a multi-variable polynomial relation

Problem

The trace algebra of two matrices is the polynomial ring generated by the traces of products of matrices A and B, like Tr(A), Tr(B), Tr(A.B), Tr(A.A), Tr(A.A.B.A.B). It is known that this trace algebra is the complete set of polynomials that are invariant under simultaneous conjugation of A and B (ie, if one replaces A and B by T^(-1).A.T and T^(-1).B.T, respectively, then the value of the polynomial doesn’t change).

Continue reading

A simple Kakuro solver

Because I’ve become quite a fan of the Kakuro puzzles published in The Guardian, I figured it might be nice to create my own little Kakuro solver. After spending some hours on this, I came up with a Java solver program (downloadable below), using a pretty elegant algorithm (some comments follow).

Continue reading

Klaverjassen — now with Bluetooth!

After a day of pretty heavy programming, I am proud to announce a new version of the Klaverjassen game, now with Bluetooth support. Just in time for my train trip to the Sziget festival next monday :)

The new version (JAD, JAR) lets you choose between server, client and standalone mode. In server mode, one gets a list of all connected clients, and one can change their ordering by using the “Up” and “Down” menus. In client mode, one just has to wait for the server.

All remaining places are filled up by computers. The server player is responsible for pressing any key to let the computer player make a move. For the rest, the gameplay remains unchanged.

ChangeLog:

Milestone 4

* Bluetooth support!
* Now play with “0″, pass with any other key
* Changed layout/player names to facilitate smaller screens

Some notes on my implementation follow when I am less tired..

Klaverjassen M3 — it’s there!

After spending some time on the PC version of my Klaverjassen game, today I transferred the improvements to the mobile version, releasing version M3 (JAR, JAD). Basically, this means that it now features the still-dumb-but-not-quite-random AI of the PC version and improved game logic.

The user interface

Also, I wrote a new user interface. It is not perfect yet, but it looks pretty OK on my mobile phone’s QVGA (240×320) display. Smaller displays probably won’t work too well. Some screenshots (from the Sun Java mobile phone emulator):

Let me explain the UI. In the left-upper corner of the screen, the game number and the person starting in this game is shown. After every change in the situation of the game, the game pauses and one has to press a random key. For instance, this is after each card played by the computer, or after each play/pass decision.

In the left screenshot, the user (”Ik”) has to choose whether to play on clubs (”Klaveren” in Dutch), displayed just below the game number. In this case, I chose to play (by pressing the “3″ button of the phone — any other key would be passing), so “Wij op K” is displayed, meaning that we are playing on clubs.

Now, I choose to play the ace of spades by pressing the “4″ button. The other players also play some cards, and I win with 29 points, as shown in the right screenshot. And so on, and so on.

Changelog and technical details

Here is the changelog:

Milestone 3 (07-08-2008)
————————
Game logic:
* [FEATURE] Base play/pass decision on cards
* [FEATURE] Simple heuristic AI
* [FIX] Reset extra points counter after game
* [FIX] Rebuild of game class in pull based fashion
* [FIX] Don’t use Integer.compareTo(), @override in game logic
* [FIX] New trump can’t be the same as old one
* [FIX] Don’t use floating point numbers: not supported by CLDC 1.0
* [FEATURE] Added field showing first player in current showdown
User interface:
* [FEATURE] Brand new, graphical UI

The game, as far as I know, uses only CLDC 1.0 and MIDP 1.0 features, so it ought to work on any Java-enabled phone. I only tried it with resolutions of 240×320 and larger; smaller screens probably won’t work too well. I’d like to hear your comments!

Klaverjassen — PC version

To find out something about strategies, I did a PC version for my Klaverjassen game. Features:

  • Play Klaverjassen against a (not very smart) computer AI
  • Keep scores of games and total score

I did a very lazy attempt at an AI so it isn’t really smart yet (stay tuned for updates on this topic), but at least it should be a bit better than the previous mobile AI, which was completely random. A small screenshot:

I know the game logic isn’t completely correct yet — sometimes an illegal move is allowed or even forced, but I hope for your comments on fixing it. Also, rather than the game just going on and on, I am planning to build “pause” functionality later.

For now, the game can be launched using this link (Java Web Start); the file can be downloaded here. Stay tuned as I port the improvements in the game logic to the mobile version!