Currently a student, I have been programming for almost 6 years, mainly in open source.
I’ve started programming plugins in 2015 in PHP for PocketMine.
Around that project, alongside other contributors in the BoxOfDevs team we’ve made several projects at the time like Sites4Code, the PocketMine Server Manager and the new version of PocketMine Tools.
Since 2017, I’ve been working on AccountFree, but I’ve also been focusing a lot on my studies.
Values I defend
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.
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.
Worked with QML Logic, Webdev, Web extensions, NodeJS, AST Creation.
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.
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.
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.
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:
Worked with templating, advanced markdown, dynamic data sources.
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.
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.
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.
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
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.
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.
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.
LogarithmPlotter Object System
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.
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.
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:
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.
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.
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:
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.
With these container technologies, I began using self-hosting technologies a lot more, including:
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.
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.
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.
Features file, calendar, and contacts synchronization, as well as groupware systems.
Collabora Office Development Edition (CODE)
Features office software, based on LibreOffice.
The primary mean to contact me is by email.
However, you can also contact me through Gitea or Github for development related purposes.
I’m not really active on Mastodon or Twitter, 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.