Emotion Aura
Reads your facial expression and hand gestures from the webcam and turns them into a cloud of particles around your face. Everything runs in the browser.
runs entirely in the browserBackend & Data Engineer in Nantes. Python APIs and data pipelines by day. By night, 17 side projects and a notebook full of the next ones.
flip through the projects
Pinned in no particular order. Hover to unpin.
Reads your facial expression and hand gestures from the webcam and turns them into a cloud of particles around your face. Everything runs in the browser.
runs entirely in the browserMy private control room. It sorts mail from three inboxes with Jev, watches 48 scheduled jobs, 26 sites and two servers, and puts everything that needs me in one feed that pings my phone.
Rate bars with your friends, straight from the bar. Everyone scores the place, the beer and the night on their phone, and each bar lands on a shared map with its grade.
iOS app that closes distracting apps on a schedule or when the daily quota runs out, and iOS itself enforces the block. Fifteen more minutes cost sixteen seconds of guided breathing.
sixteen seconds of breathing to unlockFinds what to delete on a Jellyfin server shared with friends: old files, huge files, things nobody watched. Works with Sonarr, Radarr and Jellyseerr.
350 commits, mostly while I sleptTycoon game set in the French free-party scene. Run a sound system, book the DJs, hold the party until sunrise, and hear every decision in music the simulation synthesizes live.
every sound synthesized liveGenerative art in Python. A grid of shapes, bent in real time by 20 distortion functions, with 48,000+ possible combinations.
Music blind test for a room full of people. The presenter plays the tracks, and everyone ticks bands off their own grid on their phone.
the paper grids kept running outParty buzzer for phones where the fastest thumb wins, not the fastest connection. NTP-style clock sync puts 4G and wifi players on equal terms.
Rock-paper-scissors at a distance, to settle everyday debates. Send a duel link, you both pick on your phones, and the two choices show up at the same time. No accounts, nothing stored.
loser does the dishesStats dashboard for a Mon Petit Prono league between friends, with rankings, prediction accuracy, player badges and head-to-heads pulled from the MPP API.
Pick two of 35,000+ French cities and compare them on open data: population, area, density, altitude, bars, restaurants and more.
Exports a Shopify store's products into a file WooCommerce can import. A web app plus a Chrome extension.
100+ users, my first real SaaSGrid trading bot for Binance Spot. It trades BTC, ETH and SOL against USDC, reinvests its profits and takes orders from Slack.
Landing page for a friend's business, renting beer taps and selling kegs for events.
Sends my Apple Health data to a small server every hour, and posts charts of it in Slack every day.
Watches your APIs, landing pages and servers, keeps their uptime and response times, and posts in Slack when something goes down.
an excuse to try Astroa bit about me ↓
I write Python for a living, mostly APIs and the data pipelines behind them, on AWS and Snowflake. When a tool annoys me, I rebuild it.
That's how a 4,000-line script turned into MediaJanitor, and how my doomscrolling turned into an iOS app. The best way to learn is to ship.
The stuff I reach for at work, and again at 11pm.
Notes on how things got built.
MediaJanitor took 350 commits and 150 user stories, for 10 to 15 hours of my own time. Claude Code wrote most of it overnight, in a loop called Ralph. This is how I set it up.
read the post