Hi !

Lode Hoste

Hello, my name is Lode Hoste and I am a computer science student at the Vrije Universiteit Brussel (Belgium).
You can find out more about me here.

Feel free to check out some projects in which I was involved!

Master Thesis: Software Engineering Abstractions for the Multi-Touch Revolution (work in progress)

January, 05 2010
Multi-touch interfaces are inherently concurrent and provide a continuously stream of events, which makes it very hard to implement advanced and collaborative gestures using traditional event handlers. We propose a rule based language extended with spatio-temporal operators that allows a high-level approach for describing gestures.
(defrule myTap
   (declare (salience 100))
   (SetOf
      (TUIO_Event ?fingerID,_,_,Within: 300),
      ?eventList),
   ?eventList[0].state == BIRTH,
   (isListOf ?eventList[1..-2].state, MOVE),
   ?eventList[-1].state == DEATH,
   (veryNearPosition ?eventList)
=>
   (assert (Tap ?fingerID, ?eventList[0].position, ?eventList[-1].time)))
   % Tap event with: fingerID, position and time


(defrule myDoubleTap
   (declare (salience 110))
   % Higher priority than Tap, which means the behaviour of
   % http://msdn.microsoft.com/en-us/library/ms171543%28VS.80%29.aspx
   % in 1 line
   (Tap ?fingerID, ?position1, ?time1)
   (Tap ?fingerID, ?position2, ?time2)
   % one ?fingerID variable, which means it should be the same finger.
   (smallerThan (- ?time2 ?time1) 550)
   % 550 milliseconds as default double tap (or double click) timeout
   (veryNearPosition ?position1 ?position2)
=>
   (assert (DoubleTap ?fingerID, ?position1, ?time2)))
   % DoubleTap event with: fingerID, position and time


(defrule myCircleDrag
   (declare (salience 80))
   (SetOf
      (TUIO_Event ?fingerID,_,_,Within: 200),
      ?eventList),
   (isListOf ?eventList[1..-2].state, MOVE),
   % We ignore the state of event[0] and event[-1] as it is allowed to be
   % a BIRTH (New Drag), MOVE (Drag was matched before) or
   % DEATH (will be filtered out as event[1] will not a a move)
   % This allows us to have multiple "drags" without the user notices it,
   % as it will be observed as one smooth gesture.
   (Circle ?circleID, ?circlePosition, ?circleRadius)
   % Circle as a fact in the database. This provides a clean symbiosis
   % between the GUI elements and the Gestures
   (smallerThan (distance ?eventList[0].position ?circlePosition)
                ?circleRadius)
=>
   (assert (Drag ?fingerID, ?circleID,
                 ?eventList[0].position,
                 ?eventList[-1].position)))

Finished projects page updated!

October, 22 2009

I was unable to keep up the website with the high pace of projects I started. But I finally managed to get everything up to date again. The new public projects are: IG3Tool, MpgX-Gnome-Applet, SunSpot Gesture Recognition, MpgX-G1, AmbientTalk for Android, Speech notifier for Android and the Stantum-TUIO-bridge.

New finished projects.

June, 13 2008

I've added some new finished projects: you can find a Publication Management System, IG-Airlines 2, Slot Racers, RapidRuby (RapidShare client) and more!

Current Projects updated.

December, 16 2007

I've updated the current projects I'm working on. The Airlines project will soon be finished and I'll release it under the GPLv3 license.

Downloads available.

Augustus, 10 2007

Hello, today I added some projects that I made. I released them under GPLv3 and made a public git repository. Although I don't think I will update the 2 uploaded projects (The Traffic Simulation and the Gameboy Emulator) in the future. I just like to be consistent ;-) Have fun!

Added some extra's

May, 20 2007

I published a home-made version of pastebin on my website (it's useful when you want to put some text online, you can even password it!). There are also a lot of TFC movies available. I collected them when I was a passionate gamer, but that's some years ago now... oh well. I also added some other information about myself.