A list of my current and past projects.

Learning Sandbox Online

Sandbox instances of Moodle

The Learning Sandbox Online is a website with default, out-of-the-box (for the most part) installations of all the officially supported versions of Moodle. The installations serve as playgrounds or sandboxes giving instant, hassle-free access to:

  • potential new users who want to see what Moodle looks like and what it offers;
  • new users who are learning it and need an instance for that, for example while taking a course;
  • existing users of customized versions who want to see how a certain feature normally works;
  • existing users who want to compare features between versions;
  • existing users who want to see what is available in the newest version;
  • etc.

The sandboxes automatically reset to fresh states every hour.

The website and Moodle instances are automatically installed and updated with Ansible using my custom roles for Moodle and PHP.

There is already an official Moodle demo website, but I had a number of reasons for building this website:

  • I wanted to see how I would implement it myself.
  • I wanted to use my custom Ansible role for Moodle in a real-world project.
  • It fulfills my goal of building and maintaining a useful website with many users, which I formed when first seeing StackOverflow and reading about its history.
  • Because it is open source, it can be used by e-learning service providers to create their own branded demo website to showcase to their clients.


Ansible Role for Moodle

Deploys, installs, and upgrades Moodle on Ubuntu servers

At a former employer, one of my tasks was to set up new Moodle instances for clients. I set out to document the steps for doing so. Because many of those steps were Bash shell commands, I realized I should create a script to automatically do the installations. While setting out to write the script, which would end up in many scripts that would need to be combined, I thought I should rather use a framework that came with a prebaked, proven method of organizing the scripts. The Bash framework that I chose did not work well at all and was a complete disaster.

I had heard many times of things like Puppet, Chef and Ansible, but when I visited their websites I would always be stumped by the generalized language on their home pages that left me stumped as to whether they were relevant to my plan, or as to even how to start. Luckily I found an introduction video on YouTube that got me started quickly with Ansible with which I created a role for Moodle.

Because the role I created for my former employer was not open source, I had to recreate this role completely from scratch. The advantage sometimes of redoing something is doing it better.


Ansible Role for PHP

Installs, configures, and extends PHP on Ubuntu

This Ansible role installs, configures and extends the PHP programming language on Ubuntu servers. Multiple versions of PHP can be installed simultaneously on the same server.

Originally, I was using another third-party Ansible role for installing PHP that only allows a single PHP version at a time. For occasions on which multiple websites requiring different PHP versions must be installed on the same server (for example Learning Sandbox Online where PHP 7.4, 8.0, and 8.1 are required simultaneously), that role was not appropriate. That is why I had to create my own role.

I also limited the role to Ubuntu, because that is the Linux distribution I focus on.



Alarm clock for your desktop

Timepiece is an alarm clock that runs on your desktop and includes a stopwatch and a countdown timer. All three timepieces can run simultaneously.

You can choose your own sound file to start playing at the set alarm time. The sound for the countdown timer is also customizable. The alarm clock has a snooze feature.

Timepiece has more than 5000 downloads on Sourceforge. I once saw that somebody created a video review of it. I cannot find it anymore, but it made me extremely proud.