VAN HUD

This electronics project is able to tap into some car's data bus to read speed-related informations and display them on an LCD screen. This screen is then reflected on the windshield using a semireflective sticker, thus forming a head-up display (HUD). The car I was experimenting on uses a Vehicle Area Network (VAN) bus. As this is quite an uncommon protocol, I had to decode the VAN frames myself, which was a bit of a challenge. The project uses two microcontrollers, a PIC which focuses on decoding the VAN frames, and an STM32F which communicates with the PIC through SPI and display the data on the LCD screen. I also learned how to design my own PCBs and how to solder 0.5mm pitch microchips while making this project.

Embedded
PIC
STM32F
VAN/CAN
Temporal Lens

Temporal Lens is a telemetry infrastructure for Rust. While developing a Vulkan-based graphics engine using Rust, I noticed the lack of Rust-compatible telemetry software and decided to write my own. Temporal Lens is split into three parts: a library, a server, and a client. The library is a lightweight crate that you need to add to the project to benchmark. It sends information to the server, which stores all the time-series data. Finally, the client (a Visual Studio Code extension) is in charge of rendering the collected data.

codeView source

Cue design and display depth on complex search behaviour for augmented reality

During my 6-month internship at the Australian Research Centre for Interactive and Virtual Environments (IVE), I designed an experiment comparing visual cues in augmented reality when it comes to a spatial search task (i.e. when looking for a particular object among many others). I was then offered the opportunity to conduct the user study. This was my first experience in the research field and I learned a lot from it.

Research
Augmented Reality (AR)
Virtual Reality (VR)
GemStudio

GemStudio is a university project developed during spring 2019. The goal was to render a photo-realistic looking gem in real-time using OpenGL. GemStudio achieves this by simulating a few effects such as reflection and refraction while using a High-Dynamic Range (HDR) pipeline with automatic exposure management. This project relies on two libraries described below: MGPCL as well as the user interface system used in mGraph.

insert_drive_fileReport

C++0x
OpenGL
MGPCL
ELK-based Monitoring Solution

During my autumn 2018 internship, I was tasked with setting up a monitoring system for an existing app, using mostly the generated logs. For this purpose, I adapted, configured and deployed a stack of software similar to the well-known ELK stack (ElasticSearch, Logstash and Kibana). I then had to automate the deploying process using Ansible. As I did not know these pieces of software at my arrival, I had to learn how to use them on the fly. During this internship, I realized how useful and convenient the ELK stack could be, so I later decided to set-up my own ELK stack on my dedicated server.

ElasticSearch
Logstash
Grafana
Ansible
MGE

MGE (Montoyo's Game Engine) is the first (C++) 3D game engine I ever made. It is the project that got me into OpenGL and 3D APIs in general. It began in 2012, and it is certainly the biggest project I ever made: it has a home-made GUI, TCP+UDP networking system, level editor, and audio system. It was working very well, but because I learned a lot since then, I decided to drop it and instead write a new game engine using newest technologies such as Vulkan. I would like to point out that the only libraries I used for this are the ones in the tags below.

C++
SDL2
GLEW
Bullet Physics
Crypto++
FreeType
OpenAL
LuaJIT
MGPCL

MGPCL (Montoyo's General Purpose C++ Library) is a static library I am developing mostly for personal uses. It was a great opportunity to learn about OS internals for both Windows and Linux, SIMD, and some shady C++ features such as SFINAE. It features basic containers, threading & locking primitives, SSE FFT, raycast utilities, JSON, INI and program argument parsing utilities, an HTTP client, and a few other stuff. I have been using this library a lot, even though recently I have been using Rust when it comes to low-level or performance-sensitive projects.

codeView source

C++0x
Library
CMake
WebDisplays

WebDisplays is an add-on for a game which enables players to surf online within the game. I started it in 2013, but as my programming skills improved I decided to re-write it and add some features. One of them is the ability for web pages to interact with the game itself through JavaScript. Right now, the add-on has been downloaded 1,500,000 times. Warning: The video contains a little screamer.

codeView source

Java
Gradle
Portable Counting Device (Patent)

While I was working as a production line operator during an internship, I noticed how hard it is to keep track of the number of parts processed, especially when the job consists in repeating the same movement over and over again. The problem is that putting the wrong number of parts in the container could lead to extra billing. We had simple devices with a button and a tiny display showing the number of times we pushed the button, but it was very easy to forget to push the button. That's how I came up with this idea: put a sensor in the operator's glove, and let it keep track of the part count for you. I made a little prototype using an Arduino and an inductive proximity sensor.

insert_drive_fileFR3051942

Embedded
Arduino