Articles
Smart home control panel (SHCP)
I've been using <a href="https://www.home-assistant.io/" rel="noopener noreferrer nofollow">Home Assistant</a> to control my home IoT devices for a while. Although it fulfills all my needs, I wanted to make my own system so as to get a fully customized smart home control panel and learn how to build such an application in the process.
Wireless motion sensor
This is a wireless motion sensor that runs on rechargeable batteries. It can be deployed anywhere and sends a signal using an NRF24L01 wirless module whenever it detects motion.
IoT Kernel
Over the years, I have written firmwares for various IoT devices such as lights, locks or heaters. Those firmwares would generally handle a common set of basic functions like managing wifi connection, serving a configuration web interface over HTTP or exchange MQTT messages. However, having to implement and maintain those functions for each individual firmware quickly became tedious work. Consequently, I decided to write a library to handle all those basic functions. This library is used as a base for IoT device firmwares, on top of which device-specific logic can easily be added.
MQTT control dashboard
With the cloud native multi-user MQTT platform deployed, I started designing IoT devices that I could distribute to end users. However, without a GUI, interacting with those devices would be difficult. Of course, one could install applications like MQTT dash or similar but this would require tedious configuration such as MQTT broker and topics. I wanted to give users a simpler UX so I made this simple control interface that automatically displays a users devices and allows those to be controlled.
A simple comparison of Svelte and Vue

Since its introduction in 2019, Svelte has quickly become one of the most loved JavaScript framework overtaking Vue.js in the State of JS ranking 2021 survey.
This article presents a simple comparison of Vue.js and Svelte as an attempt to explain why.
Fingerprint scanner briefcase
This briefcase is fitted with an electronic lock and a fingerprint reader so as to be unlocked with a simple touch. It also features a bluetooth module, which enables unlocking using a smartphone or computer.
This very application, a CMS based on Neo4J
Publishing articles on a website can be as simple as uploading HTML files to a web server. However, writing articles in raw HTML can be time consuming. A content management system (CMS) is an application designed to solve this issue by providing a simple way to create and manage web content directly from the web browser. There are many CMSs available, namely Wordpress or Joomla but I decided to create my own as a form of practice and in order to have it highly customized to my needs.
Habit tracker
Maintaining good habits can sometimes be hard. Recently, I've been looking at the way contributions are displayed on GitHub: a grid with a cell for each day, turning green if contributions have been made on that date. I realized that it motivated me to write code everyday, just to keep that grid as green as possible. So, I decided to create an app that provides a similar kind of motivation but for habits other than coding daily.
Wardrobe and outfits management web app
Have you ever bought a piece of clothing only to come home and realize you already had a similar one in your wardrobe? This happened to me the other day so I decided to fix the problem. To do so, I designed a simple web application in which the user can keep track of all the garments they own.
Auto CRUD

Most web applications that manage data in a database perform at least some form of create, read, update or delete (CRUD) operations on stored records. Moreover, web applications also often expose those operations via a REST API. Most database tables - corresponding to the entities manged by the application - need their own CRUD controller and set of HTTP endpoints. Because of this, large applications can quickly become tedious to develop and maintain. However, the logic for each table is usually quite similar. Auto CRUD has been developed to reduce this workload.