Projects
This page presents projects on which I work or have worked. They are presented in chronological order, the oldest at the bottom of the list and the most recent at the top. I usually work on one thing at a time, but there may be some overlap between the end of a project and the start of the next one. I also have "pet-projects" that are very small, usually implemented in one or two days, and that were simple experiments. Most of these projects are Free Software and available somewhere.
- AMD Ryzen bringup. I own an AMD Ryzen 1700 and try to optimize software for it (submitting patches when possible). List of projects to which I contributed: OpenBLAS.
- (Fulltext, source code) Master thesis (supervised by Peter Vrancx), Reinforcement Learning in Complex Environments: Evaluating Algorithms on Image Classification, 2016. For my master thesis, I implemented a Gaussian-based function approximation model that provides smooth approximation between points and has a complexity that depends on the complexity of the data, not the size of the input space. I also present distributed Reinforcement Learning algorithms based on state-of-the-art algorithms. They perform about 30 times better than a naive implementation.
- (Arxiv) Denis Steckelmacher, Peter Vrancx, An Empirical Comparison of Neural Architectures for Reinforcement Learning in Partially Observable Environments, 27th Benelux Conference on Artificial Intelligence, Universiteit Hasselt, 2015. This paper makes use of rlpy (see below).
- nnetcpp, neural networks in C++. This library is very versatile and allows to construction of any neural network graph (not only layers, not only directed acyclic graphs). Neural networks are built out of simple nodes (fully connected dense node, activation nodes, merge nodes when summation or multiplication are needed) that automatically compute their gradients. Learning using backpropagatation or backpropagatation through time is implemented. The optimisation of weights is done using RMSprop.
- rlpy and rlcpp, two reinforcement learning libraries developed during my internship at the Vrije Universiteit Brussel (summer of 2015). The two libraries are roughly equivalent and have pretty much the same interface, but one is in Python 3 and the other is in C++. They provide reinforcement learning algorithms (Q-Learning, Advantage learning), action selection policies (e-Greedy, Softmax and Adaptive Softmax), models for storing action values (single-hidden-layer neural network, LSTM and GRU recurrent neural networks, a Gaussian mixture model and a simple table model), worlds in which experiments can be done (gridworld, partially observable gridworld and agent-centric gridworld), and finally a "world" that binds rlcpp/rlpy to ROS, the Robot OS, allowing a program using these libraries to easily control a robot (either real or in a simulator).
- QML/Javascript support in KDevelop, GSoC 2014 (summary). KDevelop is a full-featured IDE for Linux, Mac and Windows that supports many languages, for instance C++, PHP, Python and Ruby. The IDE offers code-completion, syntax-highlightinh, navigation between declarations, definitions and their uses, refactoring tools, Git/SVN/Bazaar integration and supports the CMake, QMake and Makefile build systems. The GSoC project was about adding support for QML (Qt Markup Language) and Javascript (plain Javascript, ECMAScript, DOM and Node.js) to this IDE.
- SuperBudget, a website allowing the user to compare the prices of general consumption goods between the three biggest supermarkets in Belgium, and to order them directly on the supermarkets' online stores.
- The Baloo query parser (branch
queryparser
), GSoC 2013, a user-friendly query parser for Baloo (then Nepomuk), the KDE's desktop search tool. The goal of the project was to write a parser that takes natural user queries (for instance, "mails sent last monday to Jimmy") and to produce Baloo queries that can be run on the database. More details here. - LocklessDB (PDF), a lock-free integer-only database. This is the first time I use LaTeX to write somethink that looks like a scientific article. I hope you find it interesting.
- KHumanDateTimeParser, a class that reads a human-entered date-time (like "Monday next week", "3 months ago" or "Tomorrow at 9pm") and returns a QDateTime object corresponding to the date. The parsing rules are read from a locale-specific XML file. This class was made in preparation for the GSoC 2013, as my proposal for that year needed a mean to parse human-entered date-times.
- QtORM, an object-relational model for Qt, built because I needed it for another project. It is LGPLv2+ and is used in production by SuperBudget (see above, and yes, you can write websites in C++ and it is wonderful!). During my second year at the university, one or two students also used it for personal projects.
- Clover, GSoC 2011. My version of Clover was a purely software-based OpenCL 1.1 library. When I started, Clover was able to print its version number. After the summer, it was API-complete (every function had an implementation that was not a stub) and able to compile and launch simple kernels. The compiler used was Clang, in OpenCL mode. Two years later, Clover can now run more complex kernels on a graphics card, and Clang is even more powerful. The documentation is here.
- Setup, a package manager that supports many features of well-known package managers like APT/DPKG, RPM and Pacman, inspired from those and also Yaourt, a colorized Pacman front-end. A graphical interface was also present. This code depends only on Qt4 (Core, Gui for the GUI, Xml, Script, Network, Sql) and libarchive.
- Logram Website. Logram is a name I invented during my childhood. This website is a Django-based forge that sports a wiki (with history and permissions), a forum (with moderation, read notifications and polls), a bug tracker (minimal in comparison of Bugzilla, but that served its purpose), and an equivalent of packages.debian.org and software.opensuse.org. If you have Django, python-markdown, python-mysql and python-pygments, you can try to install this website on your computer or server. I don't know for how much time it will remain compatible with the ever-changing Django framework, though.
- Logram Desktop, a Qt-based desktop environment. Qt4 was in its infancy and didn't provide an icon loader for instance, so this desktop environment provided one. The desktop shell may be worth taking a look at : video.
- Logram OS. During my childhood, at 11 or 12 years, I wanted to create a new operating system. This dream made me learn x86_64 assembly (that I tested on a brand-new Athlon64 X2), the C programming language, and English (x86_64 wasn't well-known and the only source of specific and system information was the AMD official documentation, half a dozen 600-pages PDF files written in English).
- My first appearance on the Internet : DeSte IDE, an editor and compiler for a toy programming language that introduced me to the lexing and parsing world (but there is no AST, I didn't know what it was).