_____ _ / ____| | Sebastien LOVERGNE | (___ | | /projects.txt \___ \| | /awesome.txt ____) | |____ /blogroll.txt |_____/|______| /rss.xml =========================================================================== Some of the things I made =========================================================================== This is a list of some of the personal projects I worked on. Not everything is here, but I try to keep it updated. Work-In-Progress are not included here, it's only finished and maintenance-only projects. ┌──────────┐ ┌─┤ TinyFeed ├────────────────────────────────────────────────────────────┐ │ └──────────┘ │ │ Repository: github.com/TheBigRoomXXL/tinyfeed[1] │ │ │ │ This project began out of my frustration with the current options for │ │ feed readers. I often visit message boards like Lobsters[2] and │ │ Hacker News[3] to find good technical blogs. Over time, I accumulated │ │ a list of RSS feeds that I follow regularly and wanted to consume │ │ them in a way similar to message boards: a simple, time-ordered list │ │ of links. │ │ │ │ However, most feed readers are full-fledged applications that require │ │ logins, track your reading, and have a lot of features I don’t want, │ │ such as reading inside the application instead of on the feed's │ │ website. │ │ │ │ I also wanted something lightweight and easy to self-host. I found │ │ myself particularly frustrated with many so-called "minimalist" feed │ │ readers that don’t even support SQLite as a database option (looking │ │ at you, Miniflux[4] with your need for `SUPERUSER` privileges on │ │ PostgreSQL). │ │ │ │ My solution is TinyFeed: a CLI tool that generates a static HTML page │ │ from a collection of feeds. It's incredibly simple: no database, no │ │ configuration files, just a CLI and some HTML. Provide it with a list │ │ of RSS, Atom, or JSON feed URLs, and it will generate a single HTML │ │ page for them. Then, you can effortlessly set it up with `cron`, │ │ `systemd`, or even GitHub Pages, and voilà, you’ve got yourself an │ │ webpage that aggregate your favorite feeds. │ │ │ │ I’ve been using it since August 2023, and I’m very pleased with it. │ │ Due to its simplicity, it integrates easily into various workflows. │ │ For example, it started as a cron job on my server, then moved to │ │ OpenRC, then I dockerized it and added it to my docker-compose based │ │ homelab. Finally, as I removed all public-facing services from my │ │ homelab, I moved it to GitHub Pages. It’s a versatile tool that can │ │ be used in many different ways. The project has now been stable for │ │ some time and I have released the offical 1.0.0 version. │ │ │ │ The project has also gained some traction in the self-hosted │ │ community, with just over 200 stars on GitHub and a few mentions in │ │ articles and podcasts. │ │ │ │ [1] https://github.com/TheBigRoomXXL/tinyfeed │ │ [2] https://lobste.rs/ │ │ [3] https://news.ycombinator.com/ │ │ [4] https://miniflux.app/docs/database.html#configuration │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────┐ ┌─┤ 8086 Virtual Machine ├────────────────────────────────────────────────┐ │ └──────────────────────┘ │ │ This is a learning project built for the Performance-Aware │ │ Programming course[1] by Casey Muratori. A major focus of the course │ │ is understanding how your code is actually executed at the hardware │ │ level and how that impacts performance. Consequently, one of the │ │ first steps in the course is to build an 8086 emulator to better │ │ understand the structure behind assembly instructions and how they │ │ are processed. │ │ │ │ The 8086 microprocessor[2], introduced in 1978, is the foundation of │ │ the x86 instruction set, making it an excellent candidate for │ │ learning microcode from first principles. While its instruction set │ │ is fairly limited compared to modern versions (being only 16-bit, │ │ after all), it is actually quite complex compared to modern │ │ instruction sets like RISC-V as many clever hacks were used to │ │ maximize byte compactness, which was essential given the hardware │ │ limitations of the time. │ │ │ │ This project was a great learning experience and made me realize that │ │ while microcode seems like a difficult and highly specialized topic, │ │ it's actually quite approachable. Since then, I've found low-level │ │ topics much more accessible and have developed a deeper curiosity │ │ about them. │ │ │ │ [1] /archive/computed-enhanced/ │ │ [2] https://en.m.wikipedia.org/wiki/Intel_8086 │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ┌──────────────┐ ┌─┤ Games I Made ├────────────────────────────────────────────────────────┐ │ └──────────────┘ │ │ HARPOON!!!: itch.io/harpoon[1]Flappy Fuchs: │ │ itch.io/flappy-fuchs[2]Defend Your Pink Planet: │ │ itch.io/defend-your-pink-planet[3]Gravity²: itch.io/gravity[4] │ │ │ │ I discovered programming when I first tried to make games using RPG │ │ Maker XP. I was 12 or 13 years old and was amazed by the possibility │ │ of creating my own world and story. I quickly moved on to Game Maker │ │ and then Godot. Along the way, I started many projects and even │ │ finished and published four of them! │ │ │ │ Two of these games, Harpoon and Defend Your Pink Planet, were created │ │ in just 48 hours during game jams. It's liberating to know that │ │ everything must be done in 48h and that you can cut corners and make │ │ a lot of mistakes. It's a great way to learn and to have fun. │ │ │ │ I’m especially proud of Harpoon because players experienced it │ │ exactly as I had envisioned. I’m also proud of Gravity²—it was my │ │ first game, and my friends and I had an amazing time playing it. │ │ │ │ [1] https://tehbigroomxxl.itch.io/harpoon │ │ [2] https://tehbigroomxxl.itch.io/flappy-fuchs │ │ [3] https://tehbigroomxxl.itch.io/defend-your-pink-planet │ │ [4] https://tehbigroomxxl.itch.io/gravity │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ ┌─┤ My Personal Site ├────────────────────────────────────────────────────┐ │ └──────────────────┘ │ │ Repository: github.com/theBigRoomXXL/lovergne.dev[1] │ │ │ │ I started this project in the summer of 2023 as a way to experiment │ │ with a more minimalistic stack and design for the web. This site is │ │ organized like a zettelkasten[2]: everything that I write is a │ │ self-contained note that links to other resources. A tag system is │ │ used to categorize the notes into different pages of the site │ │ (awesome, blogroll, projects), and each note has its own page with a │ │ unique URL. │ │ │ │ I use Astro for static site generation, and there are no other │ │ dependencies (well, technically, there is normalize.css[3] for CSS │ │ reset, but it's so small it doesn't really count!). The site was │ │ originally hosted on my homelab, but I moved it to GitHub Pages so │ │ that I could close all public-facing services on my homelab. │ │ │ │ There are a lot of little things I like about this site: │ │ │ │ • Light and Fast: The landing page is currently only 32KB (fonts │ │ and logo included!), which means it's blazingly fast™. │ │ │ │ • Fully Accessible: Built with semantic HTML and accessibility in │ │ mind. │ │ │ │ • It's Beautiful: Well, at least I think so. And I really love my │ │ little isometric logo. │ │ │ │ • Dark/Light Theme: Based on `prefers-color-scheme`. │ │ │ │ • Print Support: With a minimal secondary stylesheet (see │ │ print.css[4]). I don't think anyone else cares about that, but I │ │ like it. │ │ │ │ • RSS Feed Support. │ │ │ │ │ │ And finally, the thing I like the most is that every page is also │ │ rendered as a plain text file! Just click on the little Want Some │ │ ASCII?[5] button at the bottom of the page, and you'll get the plain │ │ text version. This is a useless but lovely feature. It started when I │ │ was playing with ASCII diagram characters[6] to render tables and │ │ then read the OpenSSH regreSSHion report[7] and though " what if I │ │ used the same plain text formatting but using more advanced unicode │ │ characters?". After that it turned into a deep-dive into Unicode and │ │ hacks like bold and italic formatting using mathematical │ │ characters[8]. This was also an opportunity to work with Abstract │ │ Syntax Trees[9] to parse the markdow, which was something that piqued │ │ my curiosity for a long time. │ │ │ │ [1] https://github.com/theBigRoomXXL/lovergne.dev │ │ [2] https://en.wikipedia.org/wiki/Zettelkasten │ │ [3] https://csstools.github.io/normalize.css/11.0.0/normalize.css │ │ [4] https://github.com/TheBigRoomXXL/lovergne.dev/blob/main/public/print.css │ │ [5] /archive/lovergne-dev.txt │ │ [6] https://gist.github.com/dsample/79a97f38bf956f37a0f99ace9df367b9 │ │ [7] https://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt │ │ [8] https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols │ │ [9] https://en.wikipedia.org/wiki/Abstract_syntax_tree │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ─────────────────────────────────────────────────────────────────────────── The bottom of every page is padded so readers can maintain a consistent eyeline You can navigate to /awesome.txt, /blogroll.txt and /rss.xml