I am Rick Boks, a 22 year old Computer Science Master's student at Leiden University. The Master's programme I am currently following focuses on Artificial Intelligence. Thank you for visiting my webpage. Currently, it contains some information about me. I am planning to maintain a blog on this website soon.
When not studying, I can often still be found tinkering with computers. I am a big Linux enthusiast (specifically Arch Linux), and enjoy automating daily tasks with shell scripts. I also like endlessly tweaking and configuring the great free and open source software I use everyday, such as Vim, fish, qutebrowser, neomutt, and dwm. I am very invested in digital privacy, and try to stay away from using services from companies like Google and Microsoft by self-hosting wherever possible. Projects like Nextcloud, Jellyfin, Gitea, and Searx helped me accomplish this.
I finished the Bachelor's programme in Computer Science in 2019. During the three years of this study, I learned fundamental knowledge and skills about algorithms, computer architecture, artificial intelligence, logic, compilers, and many more topics that interested me deeply. My Bachelor's thesis focused on two numerical optimization algorithms: Particle Swarm Optimization and Differential Evolution. In this research I considered many existing variants of these two algorithm classes, to generate a large number of unseen algorithms by arbitrarily combining the characterizing features of all variants.
This project continued after receiving my Bachelor's degree, by creating a hybrid algorithm framework, using which thousands of hybrid PSO/DE algorithms can be generated. I ended up writing a paper about it with my supervisors, which was accepted at the GECCO 2020 conference, where I presented digitally due to the COVID-19 pandemic. The paper is available on arXiv. Now, I am following the Master's programme 'Computer Science: Advanced Data Analytics', with a specialization in Artificial Intelligence. Some of the topics I learned a lot about in the first year, among many others, are: deep learning and neural networks, reinforcement learning, swarm algorithms, evolutionary algorithms, robotics, and competitive programming. My second year has so far consisted of a research project on boundary constraint handling in Differential Evolution algorithms, and I am currently working on my Master's thesis, which will focus on adaptive selection of operators in optimization algorithms.
> employment history
- Currently: Teaching Assistant for the course 'Natural Computing' @ Leiden Universiy
- 2020: Teaching Assistant for the course 'Artificial Intelligence' @ Leiden University
- 2017-2020: IT support at home @ studentaanhuis.nl
I wrote a Particle Swarm Optimization and Differential Evolution framework in C++ for my Bachelor's thesis. Thousands of new PSO, DE, and hybrid algorithms can be generated based on existing variants, by specifying 'modules' that the algorithm should use. These modules are operators from existing variants of PSO and DE. The framework is written with extendability in mind, meaning that is is very simple to implement new variants as modules. It is hosted on GitHub here.
For my Master's thesis, I forked the PSO/DE framework to create an extensive framework for Differential Evolution with adaptive selection of operators and parameters. The framework has a similar modular structure to the PSO/DE framework. In addition to different options for mutation, crossover, etc., a large number of methods to perform adaptive selection of operators is implemented. Many of these methods are based on maintaining the population diversity, which is important to avoid convergence on local optima. The project can be found here. As an illustration, the GIFs below show first three dimensions of the solutions in the population in example runs of DE (left) and PSO (right) while optimizing the 30-dimensional Rastrigin function.
A somewhat silly project is an Android app for a popular Dutch board game 'Pim Pam Pet'. My friends and I like to play this game on occasion, and due to the lack of a decent app, I decided to give it a go. Surprisingly, it currently has over 20.000 downloads. It is available in the Google Play Store for free here.
I like to generate graphs with GNUplot, as I like its flexibility and the way the graphs look, but I keep forgetting its syntax. To solve this problem, I wrote a Bash script, aptly named 'boksplot', which acts as a wrapper and accepts very intuitive and simple syntax to generate graphs very quickly. I found this tool very useful during my studies. It is still a work in progress, but it is available on GitHub here.
Currently, I am working on a shell script that allows you to browse though the media of your favorite subreddits through the media player mpv. It can also be used as a Reddit scraper. The script is called "rdt", and it is still a work in progress. However, it is already very functional. Check it out here. The GIF below briefly demonstrates how it looks.
Another project I am working on is a terminal-based calendar application that synchronizes with a CalDAV server. More on that soon!