Archive

Archive for the ‘Open Source’ Category

QPasm 1.1 RC1

September 9th, 2009 Wesley 8 comments

The last few days I’ve been improving the small pseudo-assembler interpreter/IDE that I had created. I am quite happy with the result.

The new version of QPasm has the following new features:

  • Code editor with intelligent syntax highlighting, line numbering, visual breakpoints and undo/redo functionality
  • Debugging features: breakpoints, manual step, timed step, pausing
  • On-the-fly editing of data in the register or the memory
  • On-the-fly symbol resolving: labels can be used in assembler apps, and when modifying memory when the program is running the labels are resolved automatically
  • Integrates well with light and dark system themes. Highlighter chooses its color theme based on the darkness of the theme automatically, but colors and fonts can be configured manually as well
  • Layout, font and color settings are stored locally in a portable config.ini file
  • Input format is very flexible: white space may occur before, after and between instructions, instructions are case insensitive, comments are supported anywhere
  • Pseudo-assembler apps which are run using the run-function run in a separate thread which has a system preventing the GUI from freezing by limiting the amount of simultaneous signals to the GUI. Assembler apps which cause an endless loop cannot freeze the GUI

More information, binaries and source code are available at http://code.google.com/p/qpasm/

VN:F [1.6.3_896]
Rating: +5 (from 5 votes)
Categories: C++, Open Source, Programming, Qt, School

Small pseudo-assembler interpreter

August 30th, 2009 Wesley 2 comments

I had to develop a pseudo-assembler interpreter for the course Microprocessing.

Since it was just lying around on my hard drive I figured I could just as well put it on-line. It contains a few things that might be interesting to developers:

  • Using a C library in C++/Qt applications and translating C function callbacks into Qt signals
  • Implementation of virtual static and virtual dynamic memory
  • Converting between virtual signed and unsigned values (system independent)
  • Saving data and instructions in same virtual memory (Von Neumann architecture)

More information (and source code) is available here: http://wesley.vidiqatch.org/files/qpasm/

VN:F [1.6.3_896]
Rating: +2 (from 2 votes)
Categories: C, C++, Open Source, Programming, Qt, School

Akademy 2008: Great Experience

August 24th, 2008 Wesley 7 comments

Hello everyone! It’s been a very long time since my last blogpost, and I haven’t updated my blogsoftware in a long time. Apparently, some spammers noticed this as well and were able to add some hidden spam links in some of my pages. I should seriously update my WordPress one of these days…

Anyway. Let’s talk a bit about Akademy this year. It was my first Akademy and it was a great experience! I met a lot of interesting and fun people! Everyone seems to agree that this Akademy was the best one yet, so I’m very glad to have been a part of that, although honestly most work was done by Bart Cerneels and Wendy Van Craen.

The first day

The first day was the hardest day for the organization, or at least for me and Pieter Vande Wyngaerde. After helping out at the Akademy location (Campus De Nayer) we had to make sure everyone had a place to sleep at Roo?[sz]enda[ae]l (the name was spelled different on every sign!). The rooms list wasn’t all that clear, because the numbering was different from the room numbers, but after a while we were able to figure it out, and we were able to give everyone a place to sleep.

Resting out on the floor after all that hard work ;)

Resting out on the floor after all that hard work ;)

Party time!

On the second day I was just walking around the campus, helping the team with small things. I wasn’t able to see many talks, but I was able to at least see the Nokia keynote from Sebastian Nyström. A very interesting talk, although I’m still not sure exactly what direction Qt Software will be evolving towards with Nokia, but up until now it’s been going well, so that makes me happy enough for now.

Gouden Carolus Belgian BeerIn the evening it was party time: there was this social event at Het Anker in Mechelen, which meant free food and free Belgian beer! The “Gouden Carolus” beer is something even I – as a Belgian – had never drunk before. Personally, I think there are much better tasting Belgian beers, but maybe that’s just my personal taste. The beer was pretty strong though. But I’m sure that most of you noticed that :)

After the social event I went for a small evening stroll with some of the guys who were staying at Zandpoortvest. In the end, we walked all the way to the Zandpoortvest hostel, and after I had a look around the hostel, I had to walk all the way back to Rozendaal (I’ll just stick with this way of spelling it..) Unfortunately for me, I got lost. Too bad I didn’t have the N810 with its GPS (yet), otherwise I could’ve gotten back at Rozendaal a lot quicker. My cellphone batteries were dead as well – doesn’t this sound like some horror story? – so I just figured I’d walk and follow the signs pointing to Sint-Katelijne-Waver.

After a while I saw some arrows pointing to the train station, and from there, I was able to find my way back to Rozendaal. By then, it was around 5 am, and I had a big blister on my left foot from walking all night.

…I tried to stay up, but around 11 AM I felt really tired and I wanted to sleep a bit. And because of that I missed all the great presentations that I wanted to see! It was in the late afternoon somewhere that Pieter Verledens woke me up. Then I realized how late it already was and that I missed Zack Rusin’s Gallium3D talk, which I was looking forward to. Luckily, the talk was recorded and is available on blip.tv now (thanks to Bart Cerneels).

Nokia converts KDE developers to GNOME

The Mobile and Embedded day was one of the best days of Akademy. Not only because Nokia gave away a lot of Nokia N810 devices to more than 100 KDE developers, but also because the talks were really interesting. The big problem however is that it was a pretty busy day and I wasn’t able to see most of the talks (I really wanted to see the maemo, QEdje and OpenMoko talks as well). I ended up seeing only the OpenGL ES for Embedded Linux talk by Tom Cooksey, which was very interesting though. At the end of the talk he told us about the OpenPandora handheld device that will be released soon. Apparently it is a great device for OpenGL ES development. I found their website here: www.openpandora.org

Now, the title above this paragraph is inspired by Vincent Untz‘ blogpost. It refers to the free N810s that Nokia gave away. The devices run the Maemo OS, which is based on GNOME. And to be honest, I like Maemo a lot. It works very well. But I’m very interested in the progress that Marijn Kruisselbrink is making with porting KDE 4 to the Nokia internet tablets. Me myself, I haven’t done much with the device yet, aside from playing some games, listening to some music, and doing video calls with other KDE people ;) I did however manage to get some Qt applications ported to the device, but that was ridiculously easy. Hildon integration Just Works™ out of the box and there’s very little that has to be changed to make your application look great on the N810. Except for graphics operations which are a bit slow at the moment, as explained by Ariya Hidayat in his blog post, so I also hope that the performance problem gets fixed in Qt 4.5.

Nokia N810
The Nokia N810 Internet Tablet.

Oh. And my cat was chewing on my N810 adapter (even cats seem to like this gift from Nokia), so the pin doesn’t fit my N810 perfectly anymore. But it still works if I put it in carefully and don’t touch it, so I’m still good…

Boat and Barbecue

Thursday was a really nice day. A nice boat trip, and a very tasteful barbecue. I enjoyed it a lot. Jonathan Riddell was busy interviewing a lot of people, you can download the interviews from this link. I didn’t volunteer for an interview, but you can see me sitting in the back during interview number 44. That’s enough for me ;)

At the end of Akademy, Aaron and Chani treated us (the Akademy organisation team) to a nice dinner. Thanks for the good meal and the great stories.

Everyone had to leave back home on Friday or Saturday. Sad times. I’m planning to come to Akademy next year as well. It was a lot of fun this year.

To wrap it up, here are some random notes:

  • I’m not sure who’s the noisiest: the Amarok Wolves or Team Humongous
  • If you are in dire need of some music, maybe you can hire the A-Team!
  • Video’s of a lot of talks are available at http://stecchino.blip.tv/
  • The Emsys guys really like Mega Mindy
VN:F [1.6.3_896]
Rating: 0 (from 2 votes)
Categories: KDE, Linux, Open Source

Open source DJ mixxx’ing

January 6th, 2008 Wesley 3 comments

Sinds vorige week ben ik begonnen met mee te helpen aan de ontwikkeling van het open source DJ programma mixxx. Mixxx is een stabiel programma waarmee men live muziek kan mixen. Het heeft een aantal zeer interessante features, zoals bijvoorbeeld automatische ritmedetectie en ondersteuning voor een heleboel hardware.

Mixxx 1.6.0 with Collusion/WS/Green skin

Waar staan we vandaag? 1.6.0

Ik werk mee aan de nieuwe versie waarvan twee weken geleden een eerste bètaversie werd gelanceerd. Voor de nieuwe 1.6.0 versie zijn een heleboel nieuwe features gepland. Ik som even de belangrijkste veranderingen op:

  • Scratchen via timecoded vinyl-platen [ link naar flash video 1, video 2 ]
  • Kleurenschema’s voor skins
  • Nieuwe muziekbibliotheek (muziekbrowser)
  • Verbeterde ritmedetectie
  • Verbeterde ondersteuning voor MIDI-controllers (hardware)
  • HQ-equalizer toegevoegd
  • Audio core herschreven/vernieuwd
  • Ondersteuning voor LADSPA geluidseffecten
  • Live broadcasten over internet (Icecast, Shoutcast)
  • Rechtstreeks opnemen naar MP3, Ogg Vorbis, Wav, Flac

Ik werk momenteel aan de laatste twee punten. Het is niet zeker of het helemaal af zal raken voor de Hardy freeze in februari (het moment waarop programma’s naar Ubuntu 8.04 Hardy Heron geupload worden en niet meer aangepast mogen worden) maar Ogg Vorbis Icecast/Shoutcast-ondersteuning is zo goed als af, dus dat zal er waarschijnlijk zeker inzitten.

Zelf kijk ik uit naar de ondersteuning voor LADSPA geluidseffecten, maar ik vermoed dat dat niet af zal raken voor de 1.6.0-versie. Dan maar wat langer wachten…

Evolutie van de broadcasting code

Mixxx Live Broadcasting Preferences

Zoals eerder gezegd ben ik momenteel bezig met het implementeren van Icecast/Shoutcast ondersteuning zodat we een mix rechtstreeks over internet kunnen broadcasten. Aanvankelijk dachten we dat het simpel zou zijn om dit systeem te implementeren (gewoon libshout gebruiken) maar al snel bleek dat we eerst nog een encoder moesten schrijven. Ik ben de laatste dagen dus vooral bezig geweest met het schrijven van een Ogg Vorbis-encoder met behulp van libvorbis, libogg en libvorbisenc.

Afgezien van het feit dat er voor libvorbis geen technische API-documentatie beschikbaar is, is het ons uiteindelijk toch gelukt om de encoder werkend te krijgen. Alles ging goed, maar de audio latency was nu wel verhoogd omdat de ‘audio callback thread’ voor een korte periode geblokkeerd werd wanneer de encoder zijn werk deed. Toen we ook nog beseften dat we om metadata te updaten een nieuwe stream moesten initialiseren was het onvermijdelijk om een nieuw systeem te ontwerpen om de encoder parallel in een aparte thread te laten draaien (multithreaded) met een eigen buffer.

Albert ging hiermee aan de slag en na twee of drie dagen knoeien presenteerde hij een nieuwe ‘engine’ (de SideChain-engine) aan ons die de audio buffert voor andere engines (zoals de broadcast engine) en deze engines in een aparte thread draait. Het resultaat is lage audio latency en geen enkel performanceprobleem meer. Ook werd het totale CPU-verbruik verlaagd omdat de encoder nu iets minder vaak aangeroepen wordt.

Om het schematisch voor te stellen:

voor: [ afbeelding: Oorspronkelijke Broadcast Implementatie ]
na:
[ afbeelding: Threaded Broadcast Implementatie ]

Wat moet er nog gedaan worden? De SideChain-engine moet nog een klein beetje aangepast worden, er moet nog een MP3-encoder worden geschreven, het instellingenvenster moet afgemaakt worden, en tenslotte moet de code wat opgeschoond worden, en moet alles grondig getest worden!

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)

Aandelen van SCO gekelderd

September 20th, 2007 Wesley 3 comments

Na de uitspraak van rechter Dale Kimball in de zaak “SCO versus Novell” op 10 augustus zijn de aandelen van SCO gekelderd. De rechter besliste dat Novell wel degelijk eigenaar is van UNIX en dus niet SCO.

Dit zorgde meteen voor een daling van ongeveer 75% in de prijs van SCO aandelen.
In tussentijd is het aandeel nog verder gezakt (88% gezakt tegenover 10 augustus)

Het aandeel stond op 10 augustus nog op 1,56 dollar,
maar het staat vandaag op nog maar slechts 0,19 dollar.

Aandelen van SCO

Door deze uitspraak zal de rechtzaak “SCO versus IBM” ook vervallen, omdat deze niet langer relevant is.

Eerlijk gezegd moet ik hier wel een beetje om lachen. SCO kreeg zware kritiek te verduren vanuit de open source-wereld toen SCO besliste om IBM aan te klagen wegens contractbreuk. Het werd er niet beter op toen SCO beweerde dat de GPL (General Public License) licentie niet rechtsgeldig (te gek voor woorden) is en dat er programmacode van SCO gebruikt wordt in Linux waarvan het intellectueel eigendom zich bij SCO bevindt.

Ik ben benieuwd naar de toekomst van SCO (hoewel ik betwijfel of SCO nog toekomst heeft).
Volgens Groklaw zal SCO zich nu gaan richten op de markt van de mobiele technologie.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Law, Linux, Open Source

Tutorial: Liquid Rescaling in Gimp

September 15th, 2007 Wesley 3 comments

Liquid Rescaling met De Gimp


Wat is Liquid Rescaling?


Liquid Rescaling
is een nieuwe techniek om afbeeldingen te vergroten of verkleinen met behoud van de belangrijkste delen van de afbeelding. Er wordt gebruik gemaakt van een techniek die bepaalde curves (paden) uit de afbeelding verwijdert, daarom wordt de techniek ook wel Content-Aware Image Resizing of Seam Carving/Removal genoemd. En omdat drie namen niet genoeg is, wordt het soms ook Retargeting genoemd.

Dit is het effect dat je zal bekomen op het einde van deze tutorial:

Liquid Rescaling Techniek

Geschikt bronmateriaal

Niet alle afbeeldingen zijn geschikt om te vergroten/verkleinen door middel van deze methode. Afbeeldingen met een onregelmatige achtergrond werken het best. Denk hierbij bijvoorbeeld aan bossen, bladeren, water…

Installatie van de Liquid Rescale plug-in

Voordat je gebruik kan maken van Liquid Rescaling in De Gimp, zal je eerst een plug-in moeten installeren. De plug-in kan gedownload worden van deze website: http://web.tiscali.it/carlobaldassi/

Op de website is een installatiepakket te vinden voor x86 Ubuntu Feisty Fawn en x86 Ubuntu Gutsy Gibbon. Er is ook een algemeen voorgecompileerd x86 Linux verkrijgbaar op de website. Dankzij Paul Eipper is er ook een Windows-versie van de plug-in beschikbaar op de website. Macgebruikers zullen de plug-in voorlopig waarschijnlijk zelf nog moeten compileren.

Na de installatie van de plug-in zal de optie Liquid rescale zich in het Laag menu bevinden (je moet Gimp wel opnieuw starten na de installatie van de plug-in voordat de plug-in zich in het Laag menu kan nestelen).

Onbelangrijke elementen aanduiden

Eerst gaan we een laag maken die aanduidt welke elementen onbelangrijk zijn en dus eventueel verwijderd mogen worden bij het verkleinen van de afbeelding. Opgelet: dit werkt alleen bij het verkleinen van de afbeelding, niet bij het vergroten!

Deze stap kan eventueel overgeslagen worden indien je de afbeelding wilt vergroten, of indien je gewoon geen onbelangrijke elementen wenst aan te duiden.

Om onbelangrijke elementen aan te duiden maak je een nieuwe laag aan. Dat kan je onder andere doen via Laag – Nieuwe laag (Shift-Ctrl-N). Activeer de nieuwe aangemaakte laag door erop te klikken. Kies dan een kleur die voor jou duidelijk is (ik gebruik rood) en kleur de elementen die verwijderd mogen worden over met de gewenste kleur. Ik heb ervoor gekozen om het penseel te gebruiken (Circle 17)

Hint: verlaag de doorzichtigheid van de nieuwe laag om de oorspronkelijke elementen te zien zitten achter je verkleuring.

Gimp - Liquid Rescale Plug-in

Belangrijke elementen aanduiden

Nu gaan we een laag aanmaken die aanduidt welke elementen wel belangrijk zijn. De verhoudingen van deze elementen zullen behouden worden, zodat er geen vervorming plaatsvindt op de aangeduide elementen.

Deze stap kan eventueel overgeslagen worden indien je geen belangrijke elementen wenst aan te duiden.

Om belangrijke elementen aan te duiden maak je weer een nieuwe laag aan. Dat kan je onder andere doen via Laag – Nieuwe laag (Shift-Ctrl-N). Activeer de nieuwe aangemaakte laag door erop te klikken. Kies dan een kleur die voor jou duidelijk is (ik gebruik groen) en kleur de elementen waarvan de verhoudingen behouden moeten worden over met de gewenste kleur. Ik heb ervoor gekozen om hiervoor ook weer het penseel te gebruiken (Circle 17)

Hint: hier geldt ook weer: verlaag de doorzichtigheid van de nieuwe laag om de oorspronkelijke elementen te zien zitten achter je verkleuring.

Gimp - Liquid Rescale Plug-in

Afbeelding verkleinen of vergroten

Nu gaan we de afbeelding effectief herschalen met de Liquid Rescale methode. Hiervoor moeten we eerst de laag met de originele afbeelding activeren door op die laag te klikken. Daarna moeten we de afbeelding gaan herschalen via Laag – Liquid Rescale.

In de vakken Width en Height vul je de nieuwe afmetingen in.

Als je belangrijke elementen hebt aangeduid, dan moet je Activate feature preservation aanvinken. Bij Available Layers kies je dan de laag waar je de belangrijke elementen op aangeduid hebt.

Hetzelfde voor de onbelangrijke elementen: als je onbelangrijke elementen hebt aangeduid, dan moet je Activate feature discard aanvinken. Bij Available Layers kies je dan de laag waar je de onbelangrijke elementen op aangeduid hebt.

Select gradient function kan meestal blijven staan op Sum of absolute values. De andere mogelijkheden zullen andere berekeningen uitvoeren waardoor je een ander resultaat bekomt, maar in bijna alle gevallen geeft de standaardinstelling (Sum of absolute values) de beste resultaten.

Update energy at every step mag eventueel aangevinkt worden zodat de energieniveaus telkens weer herberekend zullen worden.

Klik op OK om de afbeelding te verkleinen of vergroten.

Gimp - Liquid Rescale Plug-in

Tenslotte maak je de lagen waarop je de onbelangrijke en de belangrijke elementen hebt aangeduid onzichtbaar door op de oogjes naast de lagen in het Lagen dialoogvenster te klikken, en je bent klaar!

Resultaat

Beren - Liquid Rescale Plug-in

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)

Slideflow: Qt4 Slideshow Application (alpha preview)

August 1st, 2007 Wesley 13 comments

Slideflow wordt een nieuw open source cross-platform slideshow programma.

Ondersteunde besturingssystemen: Windows XP/Vista, Linux, Mac OS X
Mogelijk ondersteund, maar niet getest: andere Windows versies, alle BSD varianten, Solaris, andere X11-based systemen

update: drag and drop support toegevoegd en screenshot + screencast vernieuwd

Slideflow

Klik hier voor een meer uitgebreide Slideflow demonstratie op YouTube

Ik ben bezig geweest met nieuwe mogelijkheden in Qt 4 waarmee mooie effecten te programmeren zijn zonder lowlevel kennis. Qt regelt zelf XRender (en indien gewenst OpenGL) acceleratie en met behulp van het nieuwe Animation Framework in Qt 4 is het niet moeilijk om mooie effecten te bereiken.

Slideflow is een (open source, cross-platform) slideshow programma dat door een winkel gebruikt zal worden om producten met uitleg op een moderne grafische manier weer te geven op een apart VGA scherm.

Ik ben gisteravond en deze namiddag/avond bezig geweest met de eerste stappen van het programma.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)

Pong spelletje in SDL

July 11th, 2007 Wesley 4 comments

Simple Pong Game in SDL

Ik ben de laatste dagen bezig met SDL (of Simple DirectMedia Layer) en als testprojectje heb ik een klein Pong spelletje geschreven. Ik denk echter niet dat ik dit spel nog verder ga afwerken (hoewel er nog veel te verbeteren valt).

Credits:

  • Code/Graphics: ikzelf
  • Geluidseffecten: cleanus soundpack
  • Muziek: Jogeir Liljedahl

Enkele leuke details:

  • Programmeertaal: C++ met libSDL
  • Achtergrond beweegt dynamisch
  • Infoboxen hebben ware alpha compositing dankzij sdl_gfx
  • Pong balletje wordt gerenderd en antialiased door sdl_gfx
  • Rechtse speler is een AI bot (computergestuurd)
  • Geluidspanning om geluid te positioneren (links vs rechts)

Simple Pong
Oooeh! Bijna gemist!
Simple Pong
Pff, ik kan wel winnen van die AI bot hoor ;)

Meer screenshots:
Game over! Gewonnen!

Sourcecode (GPL v2 licentie)

(build dependencies: recente versie van libsdl-dev, libsdl-mixer-dev, libsdl-gfx-dev, libsdl-image-dev, libsdl-ttf-dev)

PS: Linux gebruikers kunnen ook proberen om het spel te runnen zonder compilatie. Zou moeten werken op i386 indien de benodigde libsdl pakketten zijn geinstalleerd. Getest op Ubuntu Feisty Fawn. Windows gebruikers (en andere ondersteunde platformen) moeten sowieso hun eigen binaries compileren, want ik heb geen tijd/zin gehad om het spel te compileren voor Windows.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: C++, Open Source, Programming, SDL