About me

Currently a freelancer, I have been programming for almost 8 years, mainly in open source.
I’ve started programming plugins in 2015 in PHP for PocketMine, a project within which, alongside other contributors, I helped co-founding the BoxOfDevs group.

Between 2017 and 2021, I worked on accountfree's icon AccountFree, unfinished as of today, though I may finish it some day.

Since the beginning of 2021, I’ve been working on logarithmplotter's icon LogarithmPlotter, and remaked this website from scratch. I’m also maintaining several extension for Firefox, including unchecker's icon Unchecker.

Gitea

You can find the various open source softwares I’ve created on git.ad5001.eu, a Gitea instance. Their artifacts can be found on its dedicaded webpage.


Github

The majority of the software I’ve created is also available on Github. However, there a few repositories that might not be available there, and contributions are recommended to be done on Gitea.



My values

Privacy

Right to privacy is a fundamental human right, and it’s one of the core values I promote and defend.
It is often undermined by companies whose business model rely solely on knowing more about you, and I actively work to reduce the dependence on these companies’ products, including by promoting self hosting, as well as creating software that helps you protecting your privacy online like:

  • accountfree's icon AccountFree, which helps protecting you from being data mined by social network companies

  • the web extension unchecker's icon unchecker which helps against semi-GDPR compliant websites.


 

Transparency

Transparency is one of the greatest factors when it comes to how trustworthy a project is.
Open source is one of the most important components when it comes to how transparent an IT project is, as it the requirement to publish all source code is a good deterrent against imposing unethical functionality.
Open source in itself isn’t the sole requirement for a project’s full transparency, but alongside proper licensing and a transparent building process, it helps fostering proper trust for using open source projects.
You can find the history of my projects creations either on my Gitea profile or my Github profile, as well as build logs on Drone CI and the builds on my Nexus 3 instance.


 

My skills

Programming Languages

Software can take a wide variety of forms, and one of the core principles when creating something is choosing the right tool for the job. Each programming languages has it’s advantages and drawbacks, and creating such a wide variety of software has led me to discover and learn quite a few languages.

  Python

Worked with Advanced parsing, Reflection, Process management, Native System Interaction, Package management, Tor and UI.

I’ve been using Python since 2016 for various purposes. In the beginning of 2017, I began using it for the creation of AccountFree with PySide2 for UI based application design as well as software backend, for all the above.

Relevant software:


  JavaScript

Worked with QML Logic, Webdev, Web extensions, NodeJS, AST Creation.

Javascript is a multipurpose language that can be used to make practically anything, as long as you don’t need extremely high performance. Nearly all my GUI apps make use of Javascript to make advanced UI manipulation and sometimes logic. On the other hand, I try to use it as little as possible on my websites for them to be more performant.

Relevant software:


  PHP

Worked with Webdev (backend), CLI and Plugin development.

PHP is the first language I learned all the way back in 2015, and have developed a lot of PHP projects related to PocketMine, like plugins, development and server software back then.
Nowadays, I use software to create small APIs, and sometimes websites like services.accountfree.org.

  C#

Worked with CLI UI development, AST Creation, File management, File Syntax highlighting, ANSI Code handling.

I began using C# in 2021, and discovered it’s extensive built-in Console API which sparked the Nowox project.
However, I quickly realized it was a bit dated and didn’t use modern terminal features, which led to the creation of several libraries, like NowoxStyle and NowoxComponents.

Relevant software:


  Bash

Worked with scripting, process automation and build systems.

Having used Linux since 2016 and managing servers since 2017, I got into bash scripting fairly rapidly, which helped me not only prototype small programs using very basic interfaces, but also automate a lot of processes. Bash allows me to chain a lot of small programs together to achieve a more complex process like image content conversion, launch and building systems.

Relevant software:


Frameworks

Frameworks are very common components in software creation. However, with the idea to keep it simple, I strive to use as few of them as possible, because they tend to add performance overhead and loss.

Hence, here is a list of frameworks I’ve used in the past:

Web frameworks

  Hugo

Worked with templating, advanced markdown, dynamic data sources.

Hugo became my web dev framework of choice in 2021, for the remake of this website. It’s an open source static website generator that does not require any JavaScript or backend processing language to work, as it’s works by generating pages beforehand, making it really fast.

Relevant software:


  Bootstrap

Worked with dynamic page creation, common UI creation.

In the past, I’ve used Bootstrap to create my website UI design. While it helps creating fast websites with common components, and it can be used in conjunction with Hugo, websites made with it rarely feel a bit unique, and sometimes feel a bit dated. One of the websites I created with Bootstrap still in service today is services.accountfree.org.

Application frameworks

  Qt

Worked with UI Creation, threading, graphical effects, canvases, and sandbox management.

I’ve been using Qt since 2016 to create desktop applications. I became very comfortable with QML with the various software I created (including the Linux version of ImagicalPlugCreator, AccountFree and LogarithmPlotter). Qt is an “all-in-one” framework which also provide threading, networking, 3D and 2D drawing APIs, web rendering; without any of it’s components being co-dependent.

Relevant software:


  Mono

Worked with for all my time with C#.

Mono is a reimplementation of the .NET framework for Linux and MacOS prior to .NET 5.0, while remaining binary compatible with Microsoft’s implementations. I began using it to create Nowox in C# to maintain compatibility with all major desktop OSes. In the future, I may switch from Mono to .NET 5.0 as framework and runtime for Nowox.

Relevant software:


  ElectronJS

Worked with UI creation, desktop app creation, and packaging.

Electron is a framework that allows to use Web and NodeJS techonologies to create desktop applications for all desktop Operating Systems. While not having used it for any of my more recent applications, I have used Electron in the past to create several things, including the Windows version of ImagicalPlugCreator, and PocketMine Server Manager. However, I stopped using it because its memory footprint was too high.

As my experience with frameworks grew, I began creating some myself that I use in some of my software.

Frameworks I created

  Enecss

Features CSS 3D transform framework, javascript-less interactive state system.

Enecss is a Sass library used to facilitate the usage of CSS 3D transforms to create basic models using CSS only. It supports basic object polygon forms like planes, cuboids, and cylinders.

  NowoxComponents

Features a component based system, declarative and dynamic UI creation, styling, layout creation, animations, XML UI Declaration, and keyboard input handling.

Nowox being an extremely advanced terminal program, relying on techniques similar to standard 2D UI design, I created a component based system to allow easy design for terminal components. This system has many advantages listed above, and would allow more features in the future like mouse events handling.

Relevant software:


  BashOOP

Features both static and normal class creation, including class functions and properties, namespaces, object creation.

The Bash shell language does not support an object structure by default. So, in order to use them, I had to create my own library implementing -both static and not- classes, namespaces, as well as objects in the Bash language in a native way, while keeping a natural syntax for all those who have already done OOP in other languages. It’s more of a “Proof of concept” inspired by a piece of code found on StackOverflow, even if I created several implementations of programs like Docker which allows to simplify its use.

  AccountFree Framework

Features a common UI design, addon system, page oriented UI handling, URL handling. Based on QML.

AccountFree being very modular, it allows the creation and adding of third party services directly into it. The UI section of the framework is based on QML components designed and styled for AccountFree, and handles URL matching for each service as well, while the backend being Python modules allows it to use every framework you want with the language.

Relevant software:


  LogarithmPlotter Object System

Features an extendable object system, and dynamic history. Based on JavaScript.

LogarithmPlotter can easily be extended to add new objects based on it’s Dynamic Object System. While it does not provide an easy way to add new user objects, objects developers are encouraged to contribute to LogarithmPlotter.

Relevant software:


  Omegamma

Features UI Design.

Omegamma is the Hugo theme used in all of my new websites (ad5001.eu, apps.ad5001.eu…). It provides common themed elements to provide consistent identity. I don’t particularly recommend using it for your own website, as it was tailor made for ad5001.eu.

Relevant software:


System Administration

I’ve been using Linux for the past 5 years both on desktop and servers, as it helped and continues to help me become far more proficient with it.
While I’ve tried many distributions, here are the ones I have the most experience with:

Linux distributions

  Ubuntu

Worked with Kubuntu, Ubuntu Server.

Ubuntu has been my distribution of choice both on server and on desktop since 2016 due to the high availability of recent software on it, as well as good documentation and its widespread community.
Ubuntu strikes a great balance between having recent, up-to-date software, and stability.

  Debian

Worked with Debian Server, Yunohost Server.

Debian is aimed at having low-maintenance machines that stay with older, battle-tested versions of the standard software stack.
Using it has proven to be very painless highly stable, even more so than LTS versions of Ubuntu servers.

  Fedora

Worked with Fedora KDE, CentOS.

My limited experience with Fedora has led me to discover the Red Hat ecosystem and all of it’s benefits, namely for enterprise software.
I have also used CentOS for several servers, as it supports the Red Hat ecosystem while maintaining great stability.

This experience also made me discover container technologies:

Container technologies

  Docker

Worked with Image creation, CI/CD Image usage.

Docker is a container system to package, distribute, and run software widely used on servers.
I’ve been using Docker for since 2018 to have simplified management of the self-hosted software I used, as well as using it in CI/CD pipelines to test and deploy the software I create.

  Snapcraft

Worked with packaging and distributing Linux software.

Snapcraft is a Linux application distribution system by Canonical I’ve been using since 2017 to package and distribute the software I create.

Relevant software:


  Flatpak

Worked with packaging Linux software.

Flatpak is another Linux application distribution system I’ve been using since 2020 to package and distribute the software I create.

Relevant software:


With these container technologies, I began using self-hosting technologies a lot more, including:

Self hosting

  Gitea

Features a git hosting platform.

Gitea is a self-hosted git hosting solution. I’ve been using Gitea since 2018, at the time when Microsoft purchased Github. All my upstream software repositories are available on my instance at git.ad5001.eu.

Relevant software:


  Drone CI

Features a CI/CD Integration.

Drone CI is a self-hosted CI/CD (continuous integration/continuous deployment) platform. I’ve been using Gitea for a few years to test, build, package my apps and deploy my websites automatically directly from the Git branch.

Relevant software:


  Nexus 3

Features an artifact repository, and a distribution system.

Nexus 3 is an artifacts repository that allows me to put the built packages from Drone CI into a common repository. It is also used to hosts the binaries you can download from my apps website.

Relevant software:


  Draw.io

Features a diagrams creator and editor.

Diagrams.net (formally draw.io) is a diagrams creation software. It helps me planning the structure of some of my software’s architectures, as well as general planning in the past.

  Nextcloud

Features file, calendar, and contacts synchronization, as well as groupware systems.

  Collabora Office Development Edition (CODE)

Features office software, based on LibreOffice.

Contact me

The primary mean to contact me is by email.
However, you can also contact me through Gitea or Mastodon for development related purposes.
I’m not really active on Github, but you can still contact me there. However, do except it may take time for me to respond.


All product names, logos, and brands are property of their respective owners. All company, product and service names used in this website are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.