Portfolio

This is a non-exhaustive list of projects I developed.

Pocket Statistics

Pocket Statistics is a website that will retrieve and analyze your Pocket data. You can find it here.

It is deployed using an NGINX server (as a reverse proxy) and Waitress running on Arch Linux over IPv4 and IPv6.

Certbot (from Let’s Encrypt) is used to provide (and regularly renew through a systemd timer) TLS certificates.

nftables is used to build an allowlist-based firewall and to prevent SSH brute-forcing and ICMP flooding.

Dungeon

Dungeon is a text-based open-world Java role-playing game.

In 2017, Dungeon won a $1024 software quality award.

Screenshots

The new game screen The map

See the GitHub repository, the project page.

Walls of Doom

A platformer in C, rewritten in modern C++.

See the GitHub repository, the website.

Better Chest Organizer

Better Chest Organizer is a mod for Stardew Valley written in C#. The default in-game chest organization functionality is very incomplete, often not using enough criteria when determining the chest item order. To make matters worse, the default implementation does not use a stable sorting algorithm. This mod provides better automatic chest organization, fixing these problems.

Examples

Example 1

A chest with artisan products after sorting by the in-game button

A chest with artisan products after sorting by the in-game button. The jellies (red jars) are mixed with the other product types.

A chest with artisan products after sorting by the mod

A chest with artisan products after sorting by the mod. Different product types are clustered together.

Example 2

A chest with mushrooms of varying quality after sorting by the in-game button

A chest with mushrooms of varying quality after sorting by the in-game button. The mushrooms are sorted by their variety, but their quality has not been taken into account.

A chest with mushrooms of varying quality after sorting by the mod

A chest with mushrooms of varying quality after sorting by the mod. The mushrooms are sorted by their variety and then by their quality.

See the GitHub repository.

Self-organizing tree models for image synthesis

This is a C++ implementation of the main ideas from Wojciech Palubicki, Kipp Horel, Steven Longay, Adam Runions, Brendan Lane, Radomír Měch, and Przemyslaw Prusinkiewicz. 2009. Self-organizing tree models for image synthesis. In ACM SIGGRAPH 2009 papers (SIGGRAPH ‘09), Hugues Hoppe (Ed.). ACM, New York, NY, USA, Article 58.

The code is fairly well-documented in order to help an interested reader better understand how the paper was implemented.

See the GitHub repository.

BigWord

An application to efficiently find words in a dictionary from a multiset of letters. This is, the application finds the largest possible words from a bag of available characters.

Examples

$ ./bigword linkedlists
> instilled
> kindliest
> niellists
> slinkiest

$ ./bigword abcdefghij
> bighead
> jibhead

$ ./bigword aeioubsdlinux
> unoxidisable

Design

Data is serialized after processing in order to speed up subsequent runs.

Performance

On average, the application can query against a dictionary of 500,000 words in around 50 milliseconds.

See the GitHub repository.

Contagium

A JavaScript game.

See the GitHub repository, the website.

Photo

A Java image manipulation library.

See the GitHub repository, the project page.

Notes

My public LaTeX notebook.

See the GitHub repository, the last release, the issue tracker.

See also

You may also be interested on my list of open-source contributions. I believe that giving back is fundamental to keep the software development ecosystem healthy.