Loyalty Wallet

For the course "Current trends in HCI" ("Actuele trends in HCI" in Dutch), I followed at the UHasselt, we had to create something around a theme. This year the theme was "Shopping". Yannick and I wanted to get rid of all the different loyalty cards we had and replace it by a simple alternative that could replace them all.

We created an Android application called LoyaltyWallet. It keeps track of your loyalty cards and allows you to bring just your phone instead of 500 different loyalty cards. You can manage (add and delete), share and use the cards easily. Loyalty cards can also be shared with you, this allows you to share one card with everyone in your dorm without the need to pass a physical card around. When you are in an unknown environment and need to find a store you have a loyalty card of, the app tells you where to go.

Stores can gain crucial insight by asking the user to fill in surveys. By answering the survey, the user gains extra points or discounts. When there are new surveys or pending shares the app notifies you, so you never have to miss a reward or sharing offer.

Bachelor Thesis

We're allowed to choose our own topic for our bachelor thesis so I suggested the E-Sheet project so I could work on it and be doing something for my thesis. But the proposal was rejected, So I needed to pick something else or adjust the suggested topic. I choose for the second option. The final topic was titled "Interactive tabular data on touch devices".

For the implementation I used the Piccolo. Piccolo is a monolithic interaction toolkit, which allows to easily create a Zoomable User Interface (ZUI). A ZUI  is an UI where users can change the scale of the viewed area in order to see more detail or less, and browse through different documents.

I implemented several ways to enter data into the cells, the methods are divided in two main categories inline text editing and data entry using pop-ups. I also created two on-screen keyboards; a normal keyboard and a phone keyboard for screens with lower resolutions. The entered data is stored locally using a SQLite database.

The application was tested by several members of the RBIHF and they came to the following...

IRC Client

For the course Computer Networks at UHasselt. Pieter Vincken and I formed a group. Our assignment was to create a basic IRC client with at least the following requirements:

  • Log in to the server with a chosen nickname.
  • Join, create and leave channels.
  • Send and receive messages to/form channels.
  • Send and receive private messages.
  • Send and receive files using DCC, underneath using P2P.
  • Basic admin feature(s). E.g. Kick.

As a server we were obligated to use WeIRCd, which is discontinued by now. We choose to use Qt for this assignment, however we were still obligated to use the default socket library of C, not the one from Qt.

The following commands were implemented: /nick, /user, /pass, /connect, /join, /privmsg, /part, /partall, /quit, /dcc send, /dcc reject, /names, /mode, /real. More information about the commands can be found here.


For the course Software Engineering at UHasselt. I formed a group with 5 other people. The group were obligatory, chosen by the education staff. This caused some serious problems between some group members. Some members even left during the process. But that's all I'm going to say about that part of the project.

Our task was to develop Robo Race, a computer variation of the game Robo Rally. It can be played locally against bots or over the local network. The number of players may vary between 2 and 8.

The first part of our task was analyzing the given problem/game and creating the required diagrams. E.g. domain model, sequence diagrams, contracts, etc. This was done during the first months.

The rule book can be downloaded in attachment. Since we didn't have to implement all the rules, a short list of things we did differently:

  • You can only have one upgrade card.
  • You can't exchange an upgrade card to avoid a damage point.
  • The robot lasers only last one square when shot instead of the normal lasers that will continue as long as it isn't stopped by an object. E.g. a wall.
    The normal laser will go through robots but only the first robot that was hit will be damaged. This is visible on the image below, look at the purple
  • ...

Chess using speech interaction

For the course Technologies and Tools for User Interfaces at UHasselt. Pieter Vincken, Geoffrey Beertens and I formed a group. Our assignment was to create something using speech.

Since we didn't have a lot of inspiration we decided to create a 'simple' chess game with speech interaction. With 'simple' I mean not completely according to the rules, because of the lack of time.

Some of the rules we didn't implement are:

  • A pawn can move forward two squares during his first move.
    This doesn't really changes the game a lot. I will just take a little more time. Of course there are situations where this will be a disadvantage, but you can agree with the other player to 'play nice' to solve this problem.
  • We don't check your moves for check. This means:
    • If the opponent checks you, you have to notice it yourself. So you can do a move that doesn't get you out of the check.
    • Checkmate won't be handled, so you have to hit the opponents king to win the game.
    • If you can do a certain move that will check your own King. Don't be stupid and think before you do your move. An example of this in the demonstration above.
  • Rules like
  • ...