I believe building projects is the best way to learn a new technology. Here are some of mine.

Institut Sylvie - Beauty salon website
Fully responsive website Here is my first 'real world' project. The shop owner gave me the chance to build my first website from scratch. Back-end is handled by Flask. Front-end is built from HTML / CSS and plain JavaScript as I didn't feel the need for any libary. All persistent data are stored on a AWS MySQL database connected through MySQLdb Python library. The website is hosted on a AWS Elastic Beanstalk instance. This project taught me a lot about front-end and back-end web development as I had to do everything by myself, from designing the pages to tweaking nginx configuration files.
  • Fully responsive design
  • The owner can post news / updates that are then displayed on the homepage
  • Users can register and get notified about their next appointement, subscribe to the shop newsletter
  • The owner can manage products and services displayed as well as create new categories of products or services
  • The owner can also manage business hours in real-time
  • Visitors can contact the shop through a simple form
See more

Desktop Applications
tinyDLM - C++ Download Manager
C++ download manager built around cURLpp and ncurses I've never encountered a simple yet efficient download manager that would be free AND still maintained. So I decided to build my own and figured out it would be a great way to learn more about C++, multithreading, sockets and desktop applications and I did learn a lot along the way ! I could have used multiple non blocking sockets instead of threads and therefore only use one thread for the download manager part, but I really wanted to learn more about multithreading and its pitfalls. The main window is actually made of 2 subwindows: the downloads list displayed as a curses menu and a 'downloads status' window sitting next to it and updated in its own thread. Using different threads for windows was also a challenge since curses (actually ncurses) is not multi-thread safe, but using C++ mutexes I managed to make it work smoothly. I plan on adding some other useful features like limiting the number of simultaneous transfers or adding more than one link at the same time.
  • Works on macOS and Linux Debian based distributions
  • Supports Direct Download Links
  • Supports simultaneous transfers (tested up to 32)
  • Transfers can be paused / resumed / killed
  • Inactive transfers can be cleared from the list
  • Displays current download speed and progress for each transfer
  • Displays current transfer status
  • Signals user input and URL / HTTP errors
  • Very low CPU / RAM consumption
  • (DOING) Partially supports adding multiple links at the same time
See more

Synology Download Station CLI (in progress)
Working on creating a command line interface to manage Download Station on Synology NAS DSM via SSH. Inspired by Matthias Radig original code that is not working on DSM most recent versions and is unfortunately not maintained anymore. Download station will be controllable via both command line arguments and interactively via a fully fledged ncurses interface. Work in progress.
  • Download Station can be controlled via command line arguments
  • Download Station can also be controlled via a fully fledged ncurses interface
See more

A Haskell C compiler (in progress)
Working on creating a compiler for a small subset of the C programming language. My goal is to learn more about functionnal programming, Haskell being king in this realm, and more about compilers, C and assembly. Work in progress.
  • Currently working on binary expressions code generation
  • Handles x86 instruction set (ARM is coming)
  • Generates an assembly file that needs to be linked using gcc or clang
See more

Lane detection program using OpenCV / C++
After spending some time with Tensorflow object detection API, I decided to play with OpenCV library and C++ and find a way to detect lanes without using machine learning. It tries to detect lanes by applying multiple filters and Hough transform algorithm to detect pixels that appear to be on a similar line. It works well with a good quality source and could be used to make some very basic autonomous toy car. This program can be used wikh most image and video formats.
  • Uses Hough transform to detect points aligned on a same line
  • Works with any video and image format supported by OpenCV
  • No machine learning involved
See more

Web Applications
Business Hours Manager
A javascript application similar to what Google Business offers to manage business hours. Allows to dynamically update business hours. To avoid multiple connections to the database while modifying the hours, every change is stored locally in a JSON variable which is then sent to the server only when 'Apply' is clicked.
  • Hours can be displayed in 24h or 12h format
  • Hours are stored on a MySQL database
  • Overlapping hours are visually signaled and kept from being uploaded
  • An 'Holiday mode' allows the user to set all days to 'Closed for business'
See more

JavaScript search engine
A search functionality is always good to have on a website if you want your users to easily access what they are looking for. That's the reason I made this simple yet efficient search engine for my own website. When the user clicks on the search icon, it fetches a JSON containing all the data we want to search through and dynamically updates a list of matches everytime the user presses a key. To avoid multiple connections to the DB everytime the user presses a key, the data is only fetched once then processed locally. It takes any JSON format file and look through it. Search is case insensitive.
  • Works with any JSON / dictionary
  • Highlights key words found in the results
  • Avoids multiple unnecessary connections to the database
See more