About Me
Hi, I’m Marc-Alexis. So, I’m 23, uh… this is my personal website. Below there are icons and all that, and you can click the icons to get all sorts of info about me.
Engineering degree at EFREI Paris, MSc year 1 in embedded systems, robotics & drones major, with an exchange semester at Asia Pacific University, Kuala Lumpur.
Before the code: six consecutive seasons in petrochemicals as a piping & welding assistant at M.T.S. Pau. High-risk sites, real discipline, real hours — it shapes you.
Shipping since late 2024: Vue 3, Nuxt, Three.js, Tone.js, self-hosted Directus on an Ubuntu VPS with Docker and Traefik. Careful front end, my own infra.
Books I recommend
Eleven of the books my notes cite the most. Open one: its author is waiting on the first page.
Flow — Mihály Csíkszentmihályi
A psychologist describes “flow”, a state of complete absorption in an activity, and shows how to bring it about in work, leisure and relationships.
What I kept — The best moments are not passive, they are active.
Factfulness — Hans Rosling, Ola Rosling, Anna Rosling Rönnlund
The authors show that we systematically misjudge the state of the world, and describe ten instincts that distort how we read the numbers.
What I kept — The world is not split in two.
How to Live — Derek Sivers
Twenty-seven chapters each give a different, often contradictory answer to the question of how to live. A conclusion ties them together.
What I kept — Try everything, expect nothing to work.
Art as Therapy — Alain de Botton, John Armstrong
The authors propose looking at well-known works of art as tools for everyday life, and connect them to love, work, nature, money and politics.
What I kept — Art as a tool for personal growth.
Steal Like an Artist — Austin Kleon
A short book, based on a talk to students, in ten principles about creativity. Its central idea: all creative work builds on influences.
What I kept — The burden of total originality.
Dopamine Nation — Anna Lembke
Drawing on neuroscience and patient cases, a psychiatrist explains how the pursuit of easy pleasures leads to addiction, and how to restore balance.
What I kept — The pleasure–pain balance.
The Inevitable — Kevin Kelly
The author describes twelve technological trends he expects to reshape daily life over thirty years, among them sharing, filtering, and access over ownership.
What I kept — Technology has inevitable tendencies.
A Theory of Everything — Ken Wilber
Ken Wilber presents his “integral” theory, which seeks to connect body, mind, soul and spirit, and applies it to business, politics, medicine and education.
What I kept — Why debates across levels of consciousness fail.
Anything You Want — Derek Sivers
Derek Sivers draws forty lessons from starting, growing and selling CD Baby, and argues for a business centred on its customers rather than on profit.
What I kept — Business is not about money.
Race et histoire — Claude Lévi-Strauss
An essay written in 1952 for UNESCO. Lévi-Strauss rejects any ranking of cultures, and argues that progress comes from exchanges between them.
What I kept — Every culture moves, just not in the same direction.
Die With Zero — Bill Perkins
The author proposes spending one’s money during one’s lifetime, on experiences, rather than saving it until death, and offers a method for planning that spending by age.
What I kept — Money is for living experiences.
NFC Implant
There is a chip under my skin. A flexNT: a flexible biopolymer NFC tag, slipped onto the back of my left hand, below the little finger. Passive, battery-free — it only wakes up inside a reader’s field. That is it, on the left.
- Type
- NFC / RFID
- Frequency
- 13.56 MHz
- Chip
- NTAG216 — 924 B
- Size
- 9 × 22 × 0.4 mm
- Casing
- Flexible biopolymer, USP Class VI
- Power
- Passive, no battery
What I do with it
- Unlock my phone with a tap
- Share my vCard by pressing my hand against yours
- Open a URL — this site, for instance
- Store a little secret
- Make people mildly uncomfortable at parties
Bring a phone close and it answers. That is all it does, and it is already far too much.
Why do this?
Because I could. Because turning part of my body into a remote control is exactly the kind of useless, wonderful thing that looks like me.
It is also a small statement: the body is a playground, not a fixed object. Between this, my Obsidian second brain and a few chosen scars, the combination signs an identity — off-kilter, technological, primitive.
The operation
The questions everybody asks
Does it hurt?
One big needle, two seconds. Shorter than a tattoo, and considerably geekier.
Can you be GPS-tracked?
No. It’s passive, battery-free, range a few centimetres. No GPS, no spontaneous emission. Calm down.
What about an MRI?
A flexible biopolymer tag usually goes through fine, but I always warn the radiographer. You can never be too careful.
Can it be removed?
Yes, a small incision does it. But honestly, why would I.
Is it Bill Gates’ 5G chip?
Exactly. He texts me every morning to check in. (No.)
Is it legal?
Legal in France under medical supervision. The Netherlands has the best framework — mandatory studio licensing —, Sweden leads the world per capita, the United States varies state by state.
A half marathon on LSD
On 23 April 2023 I ran the Semi-Marathon de la Presqu’Île, 21.1 km, on 200 micrograms of LSD-25, twice an ordinary dose. I finished. That is about all there is to say in my favour.
- Race
- Semi-Marathon de la Presqu’Île
- Date
- 23 April 2023
- Distance
- 21.1 km
- Substance
- LSD-25, 200 µg (ordinary dose: 100)
- Official time
- 2 h 51 min 14 s
- Chip time
- 2 h 48 min 09 s
- Speed
- 7.5 km/h
- Placing
- 1823rd of 1840
- In my age group
- 21st of 21
- Club entered
- Le Semi Diabolique
Legal disclamer
This web page contains an entirely fictional account of a half marathon run under the influence of LSD. All content presented here is a work of fiction created solely for the purposes of entertainment and educationally educative information.
The author has never consumed LSD nor taken part in the activity described. Any resemblance to actual events, to persons living or dead, or to lived experience is purely coincidental.
This site in no way constitutes an incitement to consume illicit substances or to practise sporting activities. In the manner of pétanque, volleyball, or basketball.
The author and the operators of this deranged web site decline all responsibility regarding:
- Actions undertaken by readers following the reading of this content
- Any mistaken interpretation of the fictional nature of this account
Lysergic acid diethylamide. A psychedelic: it bends perception, mood and the way you think. Visual and auditory hallucinations, and above all a sense of time and space that no longer measures the same.
It is taken on a blotter, a square of paper on the tongue. The effects last six to twelve hours and vary enormously with the dose, the place, and the state of mind of whoever takes it. Mine, as it happens.
An ordinary dose is one hundred micrograms. A microgram is a millionth of a gram: which is to say, nothing. I took two hundred.
LSD-25, specifically. Others exist, but it is the only one seriously studied. Of the rest we know almost nothing, which is reason enough not to try them.
These substances are not legal and you get hold of them through back channels. Incidentally, to buy LSD, all you have to do is go to
The finisher’s medal, and the certificate to back it up. 1823rd out of 1840, but a finisher all the same.
Last in my age group, out of twenty-one starters. The certificate says so in writing; it would be a shame to hide it.
The photograph is the course, taken that day. Drag the line.
What it actually does: surfaces breathe. A plain wall starts to ripple very slowly, as if seen through water. Regular patterns, gravel, foliage, rendered concrete, rearrange themselves into designs that look as though they had always been there. Colours saturate, edges pick up a second outline. None of it is like a film: nothing is projected in front of your eyes, it is the ordinary world going unstable at its edges. And across three hours of running, it never once stops.
What I took from it
- LSD does not help you run. I held on despite it, not thanks to it.
- Effort shortens the effects: five hours instead of the eight to twelve advertised. That is the one genuinely curious thing here.
- Objective data matters when perception is worth nothing. The watch did the job my head had stopped doing.
- Feeling chased by what you can see is a formidable reason to keep moving.
- I still hate running. Some things do not shift.
Questions and answers
Why do it?
I was nineteen, I had read a book about a man who covered eighty kilometres in that state, and the book was bad but the idea followed me around for months. There is no better reason than that.
It is legal, right?
No. LSD is a controlled substance in France: a year in prison and a €3,750 fine for use. I am not pretending otherwise.
Did it make you faster?
7.5 km/h and last in my age group. You be the judge.
You ran with your mother?
Yes, she was on the course. She knew what I had taken, and she had taken nothing: she ran sober, like a normal person. I mention it because that is always the next question.
And yes, I am
- Vengeur
- Entièrement
- Gainé,
- Adversaire
- Nocturne
In a black vigilante cowl, in a cellar. Text covers the image, in French: “non merci, je ne vais pas prendre de côtes de porc, je vous remercie cependant pour votre offre” — no thank you, I will not be having pork chops, but I thank you for the offer.
At night, arms folded against a brick wall under a street lamp, in a black cape and eye mask. Across the top, in green letters: “Super-hero VEGAN”.
In a blue and red superhero suit, red cape, black eye mask, fists on hips, in the middle of a garage. Along the bottom, in large yellow letters: “VEGAN”.
The questions
No, my greatest joy is neither my family nor my girlfriend, but these two cartons. Vanilla Soy™ and Chocolate Soy™.
Where do you get your protein?
Lentils, chickpeas, tofu, seitan, grains. I think about it about as often as you think about yours. The Academy of Nutrition and Dietetics says vegan diets are adequate for every stage of life, top-level athletes included. But thanks for worrying about me.
Aren’t you deficient?
No. One B12 tablet a week. B12 is made by bacteria, not by animals. A steak has B12 because the cow was supplemented or ate bacteria.
Plants feel pain as well, no?
No, you absolute idiot. Plants have no nociceptors and no nervous system. This is Year 8 biology. (dickhead)
Lions eat meat, though.
Are you a lion, dickhead? Has your Lion™ got a dickhead’s iPhone 17 Pro Max?
Fine, but it’s nature.
Lions kill their rivals’ cubs, but funnily enough meat is the only place that example ever comes up, because the day I kill a competitor’s children you all start whining that I killed your kid. Make your mind up at some point, for crying out loud.
I could never, I love cheese / meat / insert something I don’t eat but you enjoy far too much.
ok. don’t remember asking though. you watch yourself.
What’s your annual salary?
Right, now there is no connection to veganism whatsoever! But I hear you, the question is legitimate — the context just isn’t.
Humans are omnivores by evolution.
Human evolution is descriptive (what happened), not prescriptive (what ought to be). Evolution also gave us farming, cooking and supermarkets. Follow the evolutionary logic and we should all be eating our meat raw.
Are you a model vegan?
As an individual? Absolutely, I am an example to one and all. As a vegan, though, no: it’s true, and I confess, sometimes I buy Kinder Country bars full of milk. But they are so fucking good, I can’t resist the sirens of capitalism forever. And sometimes I kill cows with a knife, just for fun too.
My internship at Kyber
Kyber
Kyber builds the infrastructure that drives machines remotely, in real time: robots, drones, vehicles, remote desktops. I have been an engineering intern there since September 2026.
- What it is
- real-time infrastructure for machine control
- On one link
- video, audio, control inputs and telemetry, on a single clock
- Latency
- 8 to 10 ms end to end, as announced
- Transport
- QUIC and HTTP/3, encrypted end to end
- The code
- an open source SDK, under the AGPL v3
- Platforms
- Windows, Linux, macOS, Android, iOS, XR headsets
- The team
- the one that built VLC
Why 8 ms
According to Kyber, hand-eye coordination runs at 30 to 50 ms. Below that, the robot does not respond after your hand moves, but as it moves. At 200 ms you are watching; at 8 ms you are controlling.
Not WebRTC
WebRTC was built for video calls between humans, where 100 to 200 ms of latency is fine. To drive a machine, it is too much: Kyber has its own protocol, and says so.
VLC
The founding team built VLC, installed on billions of devices, and contributed to FFmpeg, which encodes most of the video on the internet. Twenty years of video, turned towards machines.
The job
Embedded developer, as an intern. Not one topic for six months: demos, several projects in parallel, and you have to adapt.
- Role
- embedded developer, intern
- Since
- September 2026, for six months
- Studies
- MSc year one in embedded systems, EFREI Paris
- Languages
- Rust, C and C++
- Systems
- ESP-IDF, embedded Linux built with Yocto
- Robotics
- ROS 2, dora-rs, MAVLink
- On the bench
- KiCad, soldering iron, multimeter, lab power supply
From the bottom up
I am learning electronics from the bottom up: schematics, boards, what gets hot.
Day one
A small topic to start with: compare ROS 2 and dora-rs, two ways for a robot’s programs to talk to each other, and check the licences of every dependency of dora-rs. Closed within a week.
Measuring latency
The main project: a bench that measures the latency of a display, the time between a key press and the image changing. A light sensor stuck on the screen, a tablet that keeps time.
- The board
- M5Stack Tab5, on an ESP32-P4
- The firmware
- Rust, on ESP-IDF
- The interface
- Slint, in Rust too
- The sensor
- a photodiode, read by the analogue converter
- What it measures
- key to image, the frame rate, the gap between sound and picture
Reliability over finesse
The rule set at the start: nothing complex that could break, even if it costs 2 ms of precision. It ruled out an adjustable comparator, and the idea of soldering a wire into a real keyboard.
The 50 Hz
A 50 Hz interference shifted every measurement. The software filter worked around it; the cause was a power strip lying against the sensor’s wires. Once removed, the interference shrank tenfold.
The solder joint
An hour and a half lost on the setup, for one solder joint on the photodiode. Since then: diagnose wire by wire from the start, measure before blaming a part.
A/B
Before blaming a new firmware version, an A/B test: the same setup, both versions, five minutes apart. It was not the culprit.
The real signal
A synthetic test does not replace a real run: recordings from the actual bench became tests.
Robots
A robot dog to get walking, driven with a gamepad through Kyber. And the team’s robotics, seen from a little further away.
- The robot
- Mini Pupper 2, an open source quadruped by Mangdang
- Inside
- a Raspberry Pi CM4, and an ESP32-S3 for the servos
- The system
- a Linux image built with Yocto
- Driving
- a gamepad, through Kyber
- Protocols
- MAVLink, UDP
The port
The dog’s software is made for Ubuntu. My task: port it to a Yocto image, with the camera, the screen, the servo board, the gait and the gamepad.
Read what runs
The servo board stayed silent: the official software opened a serial port under its old name, and the system shipped with the dog ran on a fixed version. Lesson: read what runs, not just the repository.
Further away
A NMEA 2000 bus on a boat, a GMSL2 camera on a small Linux board: research for projects that others carry.
Boards
Circuit boards: drawing them, reviewing them, bringing them up.
- Software
- KiCad: schematic, routing, ERC and DRC
- Form factor
- Raspberry Pi HAT
- Microcontrollers
- SAMD21, RP2354A, ESP32-P4
- Firmware
- PlatformIO, and some Rust
- On the bench
- lab power supply, multimeter
Stock
The best regulator on paper had no stock at the assembler. Lesson: availability decides as much as the datasheet.
Reviewing
Reviewing other people’s boards, from scratch. A mistake not to repeat: check both the tracks and the copper zones before stating a width.
Bring-up
A brand-new SAMD21 board does nothing on its own: a test firmware, tests from the PC, and the procedure to flash it.
My Linux setup
NixOS
Both my machines are described in a single git repository, from the kernel to the cursor colour. Nothing gets in because “it was there before”.
- Distribution
- NixOS, and home-manager for the rest
- Method
- one flake, two machines
- The tower
- dieu — i5-6400, Radeon RX 580
- The laptop
- ThinkPad P14s — Ryzen AI 7 PRO 350
- Non-free
- allowed package by package, never wholesale
The docs
Every documentation page lists the files it describes. A commit that changes the configuration without updating its page is refused, and the docs site republishes itself after every commit.
The desktop
Hyprland tiles the windows, a hand-written bar says what’s wrong, and everything is orange on black.
- Compositor
- Hyprland, configured in Lua
- One config
- for two machines: it reads their name
- Bar
- Quickshell, in QML
- Theme
- “braise” (ember) — #ff6b1a on #0e0e0f
- Shapes
- squircles, not rounded corners
- Fonts
- Figtree, and a custom-built Iosevka
The bar
It replaced three programs at once: the bar, the launcher and the notifications. Its rule: if something’s wrong, show it; otherwise, nothing.
The wallpaper
A matrix of glowing dots, animated in a shader. Before it: a neon tunnel, a photo, a ribbon sky and a sea horizon. All rejected.
Zero shortcuts
A half-saved config was loaded as is. Hyprland ran with zero keyboard shortcuts, without a single error message.
The terminal
One kitty window, one tmux session. Hyprland does the tiling, not the terminal.
- Emulator
- kitty
- Multiplexer
- tmux
- Shell
- zsh in vi mode, starship
- Editor
- Neovim, described in Nix with nixvim
- Tools
- fzf, zoxide, eza, bat, fd, ripgrep
- Also
- yazi, lazygit, btop
13.5
The terminal font size isn’t a matter of taste: it’s computed to land on whole pixels at the screen’s 4/3 scale.
Neovim
Its whole configuration is written in Nix, about 1,400 lines, with the space bar as the leader key.
Willy Wonka
My keyboard is split in two, wireless, and named after a chocolatier.
- Model
- Corne Choc Pro, by Keebart
- Link
- Bluetooth, one half per hand
- Screens
- a nice!view on each half
- Firmware
- ZMK, built at home
- Layout
- QWERTY, home row modifiers
- Layers
- six
The screens
Every layer has its animation: real props from Charlie and the Chocolate Factory (2005) spinning in 3D. The Golden Ticket, the lollipop, the Wonka Bar, the Smilex toothpaste.
The name
It was called Cyril Hanouna until October 4th, 2026.
Dictation
One layer has two keys for it: one records my voice, the other pastes the transcript.
My tools
Two tools I wrote for myself, living in the terminal: my tasks and my calendar.
- Stylite
- tasks — server and CLI in Go, TUI in Rust, web in Svelte
- Comput
- calendar — CLI in Python, TUI in Rust (ratatui)
- Where
- on my server; both my machines talk to it directly
- The calendar
- self-hosted, CalDAV: the iPhone reads it too
Stylite
The home-made task manager. An inbox, today, upcoming, a logbook of what’s done; projects, headings, deadlines. Every task of this site lives there.
Comput
The calendar: month, week, day and agenda views, events at their place and length, side by side when they overlap, and a line for the current time. It replaced khal and vdirsyncer.
The TUI
A text interface, in the terminal, keyboard only: j and k to move, ? for every key, a comma to open every command. Nothing waits: the first screen comes from the cache, the sync follows in the background.
The settings
Theme, layout and keys are described in my NixOS config and checked at install time: a key bound twice fails the install, not the launch. Both wear the “braise” theme.
The safety net
Every Comput command also answers in JSON, and every write can be undone: u reverts the last one, exactly. An event changed meanwhile on the phone isn’t overwritten, it’s refused.
The quirks
The useless stuff, or nearly.
Anti-croissant
Use my unlocked laptop to announce that I’m buying croissants for everyone, and the message gets replaced, the webcam takes your picture, and the screen locks on “NO CROISSANT FOR YOU”. It also catches “crwassan” and “tnassiorc”.
The lid
The red dot of the ThinkPad logo spells “marc-alexis” in Morse code, forever. So does this one: watch it. It’s useless, on purpose.
juice
A home-made power and sleep tool. It changes its settings depending on where I am, and turns off the CPU boost so the fan stays quiet.
Projects
I configure my toothbrush from a terminal. Everything else is in the same vein.
nothing-toolbox
nothing headtrack in a terminal, animated: white low-poly headphones above a grid floor, following the movements of the head as it nods, turns and tilts.
A single command-line tool that drives my headphones, the Nothing Headphone (1), from Linux: noise cancelling, EQ, codec, battery, and their orientation sensor. No phone, no app, no account.
- Language
- Rust, MIT licensed
- Link
- classic Bluetooth, RFCOMM channel 15
- Frames
- 0x55 header, CRC-16/MODBUS
- Tested on
- Nothing Headphone (1), model B170
- Since
- October 2026
One channel
The headphones take one connection at a time: a second one is refused. So a daemon holds the channel and serves every other command through a local socket. Toggling noise cancelling takes about 0.3 s on its own, 50 ms through the daemon.
Nodding
The headphones send their orientation as quaternions, about ten times a second. nothing headtrack --viz draws a low-poly 3D headset from it in the terminal, PS2 style; nothing gestures turns a nod into play/pause and a shake into the next track.
The EQ
nothing eq edit draws the curve in the terminal and sends it to the headphones while you move the bands. The overall gain is computed exactly as the app computes it.
The protocol
It is written down in the repository, and every fact carries its status: seen on the device, read from the app, or inferred. Switching from AAC to LDAC reboots the headphones, back after about 7 s.
laifen-toolbox
laifen tui in a terminal, animated: a low-poly polished steel toothbrush turns on a grid floor while brushing, and the panel with modes and battery counts the seconds.
The same idea, for my toothbrush, a Laifen Wave: its four modes and their settings, brushing time, the 30-second reminder, the battery, and a 3D view of the brush in the terminal. No phone, no app, no account.
- Language
- Rust, MIT licensed
- Link
- Bluetooth LE, through BlueZ
- D-Bus
- spoken by hand, no library
- Frames
- 0xAA header, XOR checksum
- Tested on
- Laifen Wave, model LFTB01-P
It sleeps
The brush falls asleep after each command, and usually takes about twenty seconds to show up again; once, two minutes. So laifen shell runs several commands over a single connection.
Care
The protocol can factory-reset the brush or rewrite its firmware. laifen only sends commands tried on a real brush, read back, then restored; the others are not written.
The 3D view
laifen tui draws a low-poly brush in polished steel, PS2 style, on a mirror floor. While it brushes, its head swings with the mode’s range and speed, slowed down so you can see it.
kishot
A kishot sheet: a circuit board in six 3D views, top, bottom, three-quarter and profile, under a header that describes it.
It turns a KiCad board into sheets you can send: six 3D views, the copper layer by layer, each under a header that says what the board is. One command, no GUI, the same picture every time.
- Language
- Python 3.9+, one file, no dependencies
- It drives
- kicad-cli and ImageMagick
- KiCad
- versions 9 and 10
- Licence
- MIT
What changed
kishot --diff compares the board with an older git revision: copper removed in red, added in green, each change ringed so a short track still shows, and a GIF that fades from one to the other.
Before ordering
On demand: a visual BOM, the Gerbers redrawn by another tool than KiCad, the silkscreen as the fab prints it, and 1:1 PDFs to lay the real parts on paper.
Pull requests
A GitHub Action comments a pull request with the diff sheets, and updates its comment at each push. About two and a half minutes a run, mostly downloading KiCad.
The turn
kishot -s spin turns the board on itself at 20 frames a second, as a GIF pixelated like a PS2 game.
Bouillon
Bouillon’s search page, for the word “blue”: a grid of thumbnails, reduced here to flat patches of colour.
An image archive, mostly from Are.na. Each image gets its tags from Claude Haiku and a vector for semantic search: you find it by a word, or by a nearby idea.
- Server
- FastAPI, SQLite and sqlite-vec
- Search
- by keyword, by meaning, or both
- Terminal
- a client in Rust
- Mac
- a native app in Swift
On demand
The server only runs when it is used: a front door starts it on the first request and stops it after fifteen minutes without a visit. The 2 GB process only runs when it serves.
In the terminal
The Rust client shows the images in the terminal: real pictures in kitty, half-blocks elsewhere. One mode goes through Are.na one image at a time; keep it, or skip it.
On the Mac
For the native app, the CLIP model converted to Core ML: a cosine of 0.9997 with the original, on images. On an M4, 5,880 thumbnails go through in 177 seconds.
juice
juice’s dashboard in a terminal: power flowing from the charger to the system and the battery, the curve of the last two hours, and the battery’s state.
A home-made tool for the laptop’s power and sleep. One binary, three roles: a dashboard in the terminal, a daemon that does the work, and the commands of the bar and the desktop.
- Language
- Rust: ratatui, wayland-client
- Context
- the network, mains or battery
- Idle
- the ext-idle-notify-v1 Wayland protocol
- Since
- October 2026
Presets
A list of presets, each with its conditions; the first one that holds applies. The file is read again when it changes, nothing to reinstall. So that a wifi dropping for a second changes nothing, it only moves down the list on the second reading in a row.
The fan
Switching to the balanced profile brought the fan down from 5,290 to 4,460 rpm, and the CPU from 80 to 67 °C. Turning boost off caps it at 2 GHz instead of 5.09: anything heavy is much slower, that is the price.
Live
The idle timers go through a Wayland protocol: delays change without restarting anything.
This site
This site’s home screen: the character in the middle of a burst of cyan glass towers, and the menu on the right.
The site you are reading: my portfolio, replayed in the dashboard of a PlayStation 2. Black background, cyan glass towers, yellow labels, memory cards.
- Interface
- Vue 3, Vite and Pinia
- 3D
- Three.js: the field, the objects, the head
- Style
- hand-written CSS, no framework
- Sound
- samples from a real PS2
- The aquarium
- a write service in Rust
- Since
- July 2026
The towers
The real console draws one glass tower per game, its height set by the time spent on it. Here, one tower per door of the home screen, its height set by how much there is to read behind it.
The objects
The 3D objects of this page and of the other pages are written in code, and share a single scene, lent from page to page: a browser only holds about fifteen WebGL contexts.
As text
The whole site also exists as plain text, in French, English and Japanese, for screen readers.
The secrets
Sixteen easter eggs, to be found. The counter at the top says how many are left, never where to look.
Contact
The simplest way is an email. No form, no robot in between: it lands in my inbox, and I’m the one who opens it.
- Email : contact@marc-alexis.com — A question, a project, a weird idea: it all goes through here.
- GitHub : github.com/marc-alexis-com — The code of my public projects.
- CV : cv-marc-alexis-manso-peters.pdf — One page, as a PDF.
System
The towers
A PlayStation 2 dashboard draws one glass tower per save sitting on the memory card. Here it’s one tower per menu entry: the glowing one is the one you are pointing at.
The blocks
The drifting purple cubes are the card’s free blocks. There are some left, so this site is not finished. It never will be.
The real site
marc-alexis.com does exist, in three languages, with a full OS and collectible figurines. This one is just another memory card.
The 3D models
The chest, the wreck, the rowboat, the axolotl and the hammer come from Sketchfab under Creative Commons licences: “Minecraft Chest” by Blender3D, “Fishing boat” by Pabooklas, “Minecraft boat” by vovash, “Minecraft Axolotl” by Marina Vildanova, “Toy Hammer” by Pedro Perim. They were cut down from 41 MB to 344 KB to fit here. The crab is Ferris: character by Karen Rustad Tölva, 3D model by RayMarch, public domain. The two chest sounds come from Minecraft.
The head
The head on “About me” starts from FLAME 2023 Open, a head model by the Max Planck Institute for Intelligent Systems (T. Li, T. Bolkart, M. J. Black, H. Li and J. Romero, SIGGRAPH Asia 2017), under a CC-BY-4.0 licence. It was fitted to four photos of Marc-Alexis, then cut down to 1,342 triangles.
The logos
On the Linux page, the NixOS snowflake is redrawn in 3D from Tim Cuthbertson’s logo for the NixOS project (CC BY 4.0), and the Neovim logo from Jason Long’s (CC BY 3.0).
The covers
The covers in “Books I recommend” belong to their publishers and illustrators. They are shown small, to recommend the books, nothing more.
The portraits
The authors’ photos, on the page of an open book, come from Wikimedia Commons, cropped and scaled down: Mihály Csíkszentmihályi by Ehirsh (public domain), Hans Rosling by the Gapminder Foundation (CC BY 3.0), Derek Sivers by himself (CC BY-SA 4.0), Alain de Botton by Fronteiras do Pensamento (CC BY-SA 2.0), Austin Kleon by Larry D. Moore (CC BY 4.0), Anna Lembke by EthicsinSociety (CC BY 3.0), Kevin Kelly by Cmichel67 (CC BY-SA 4.0), Ken Wilber by Kanzeon Zen Center (CC BY 2.0), Claude Lévi-Strauss by Bert Verhoeff for the Nationaal Archief (CC0), Bill Perkins by the World Poker Tour (CC BY 3.0). The cropped versions of the CC BY-SA photos remain under the same licence.
The project logos
On the Projects screen, the technology logos come from Simple Icons (CC0). Each remains its owner’s trademark, used to name the tool; Rust’s is under CC BY-SA 4.0 (Rust Foundation), KiCad’s under GPL 3.0 or later, Wayland’s under the MIT licence. The board on kishot’s sheets is Lord’s Boards’ RoyalBlue54L Feather, under the CERN-OHL-P v2 licence.