Public Key

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: SKS 1.1.5 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 PdQ= =fXbQ -----END PGP PUBLIC KEY BLOCK-----

August 17, 2016

Embedded Bitcode

Little over a year ago, Apple announced at WWDC 2015 the ability to embed bitcode in Mach-O files. Bitcode is the intermediate representation used by the LLVM compiler and contains all the information required to recompile an application. Having the bitcode present, in addition to machine code, Apple can further optimize applications by compiling and linking specifically for the user’s target device. This is one approach to app thinning, which aims to achieve smaller binaries and therefore more free space on your iDevice....

June 21, 2016

MAsCOT

Self-Adaptive Opportunistic Offloading for Cloud-Enabled Smart Mobile Applications with Probabilistic Graphical Models at Runtime I’m proud to announce that the paper summarizing the findings in my master’s thesis (Intelligent Offloading Decisions for Mobile Cloud Applications) will be presented at the 49th Hawaii International Conference on System Sciences (HICSS). Abstract: Although extensive progress has been made in Mobile Cloud Augmentation, automated decision support on the device that enables the opportunistic and intelligent use of cloud resources is missing....

January 4, 2016

Understanding the Clang AST

Clang is everywhere; It is the core of my favorite Vim plugin YouCompleteMe, it recently got supported by Microsoft Visual Studio, it is mentioned in numerous episodes of CppCast and it powers the excellent clang formatter. Naturally, I wanted to get a better understanding of how the clang front end works under the hood. Clang Front End & AST Clang is a C language family front end for LLVM. In compiler design, a front end takes care of the analysis part, which means breaking up the source code into pieces according to a grammatical structure....

December 31, 2015

A better YouCompleteMe Config

If you’re like me and have (1) been using Vim for a while and (2) have been programming in C++, you’ve likely heard about YouCompleteMe. YCM is an awesome auto-completion engine for Vim. For C++ and other C-based languages it uses the libclang under the hood, but it integrates with other engines as well to support C#, Python and Go to name a few. If you’re not yet convinced, check out the author’s website and this blog post....

July 26, 2015

Packages I Wish I Knew When Starting LaTeX

I’ve been using LaTeX for almost a decade now. Even after that much time, I keep running into new problems that require a solution I wasn’t aware of. LaTeX has a great community and usually there’s someone that already faced your problem. Every time I learn something new. This post discusses some packages that I consider to be essential, or that you should be at least aware of. I’m assuming you already know the basics, but if you don’t (and maybe even if you do) I can recommend The Not So Short Introduction to LATEX 2ε by Tobias Oetiker....

June 11, 2015

Word Search Solver

When browsing the Medium homepage I came across this post about #wordsearchwednesday. Although I enjoy a puzzle as much as the next guy, I immediately thought that this was something Haskell lends itself to very well. Less than an hour later I had a working solver. It simply brute-forces the solution by checking every combination with a dictionary. I used the Hunspell dictionaries but anything will do. toSet :: ByteString -> Set ByteString toSet = Set....

February 13, 2015

Arduino Display

As I already mentioned in a previous post, I recently purchased a 4 line LCD display to play around with. It provides an I2C Bus which means that it can be connected to your Arduino or similar microcontroller with only two wires. I could’ve come up with a thousands things to do with this display: using it for showing notifications, as an RSS scroller or as a hardware dashboard with temperatures and statistics....

December 28, 2014

Proper Printing with HD44780 LCD

I recently purchased a very simple, Hitachi HD44780 compatible LCD screen for an Arduino project. It’s a 20x4 I2C display, which apparently is constructed as a combination of 2 two-line display controllers. This wouldn’t really matter except for the fact that when printing strings longer than a single line, they are displayed in a 1324 matter. So if you set your cursor on the first line and print a string 80 characters long, things get weird....

December 25, 2014

Course Notes & Summaries

For some of the courses I took during my studies in computer science at the University of Leuven, I’ve combined the course material, typically with the help of others, into structured and easy to study documents. Hoping that other students could also benefit from these notes, I’ve made them publicly available, on Github. The documents are writen in LateX which hopefully encourages my fellow students to correct mistakes and improve or extend them....

December 23, 2014