back
▲ 290 points

Ask HN: What Are You Working On? (March 2026)

by david927·5mo ago·1131 comments·view on hn ↗
What are you working on? Any new ideas that you're thinking about?
1131 comments
I changed gears and moved into the video games industry at the end of 2021.

I started developing a city builder called Metropolis 1998 [1], but wanted to take the genre in new directions, building on top of what modern games have to offer:

- Watch what's happening inside buildings and design your own (optional)

- Change demand to a per-business level

- Bring the pixel art 3D render aesthetic back from the dead (e.g RollerCoaster Tycoon) [2]

I just updated my Steam page with some recent snapshots from my game. Im really happy with how the game is turning out!

[1] https://store.steampowered.com/app/2287430/Metropolis_1998/

[2] The art in my game is hand drawn though

So pretty. But:

> Both adults in a family will now own a car. This is required since there are not other transportation options, and sidewalks are optional.

Is this temporary or are you planning to release it like this? SimCity leaned into euclidean zoning (separate industrial/residential/commercial zones) and pocketable cars which needed no parking, and thus failed to properly showcase how ugly car-centric cities actually are. I’m sure they did it because it made for an easy gameplay loop/balancing but I’d hope we could come up with more realistic and interesting mechanics in 2026

I have been following you on twitter since I saw it. It looks amazing. Recently tried the demo. It is like under 50MB (the demo at least) which is insane these days. Placing building required construction of the building room by room which was tedious. I am sure some people will enjoy that. Will that be the core part of final game?
Can you tell more about your background? Making a sim like this also crossed my mind many times, but I learned in the past, that without much of any art skills, I would have to use resources of others or hire someone to make the graphics and so on. In the times of me playing around with RPG maker it was the missing story that was the problem. So it seems often that one core aspect is missing, when wanting to make a game. How did you learn to fill that gap, learn how to get that skilled with making the graphics?
Metropolis 1998 looks beautiful! (and addictive!)

Will you do a native Linux release, or has it been tested with Proton?

Also, just from watching the video and screenshots in the Steam page, it seems like a crazy amount of work. Are you doing everything by yourself?

We really do need more new isometric grid based games. They are less realistic but it is _so_ satisfying to build in them.

I've commented on it before: https://news.ycombinator.com/item?id=39810716

I am one of those who grew up with Sim City/Transport Tycoon. I will definitely try this when it's released and go back into nostalgia but with a modern touch. Adding it to my wishlist right now. Good luck with wrapping this up towards a release!
This looks awesome! From the isometric perspective, how did you do the walls or vertical stuff in general? I have done a few game like that and always find it to be a struggle in 2D.
Love the concept! I would love it even more if you could add support for SteamDeck/proton
I came across your game last year! Can't remember how. Any hopes of macOS support?
Vibe-coded a YouTrack CLI tool in < 1 hour:

https://github.com/keithn/yt

Also working on a language for embedded bare-metal devices with built-in cooperative multitasking.

A lot of embedded projects introduce an RTOS and then end up inheriting the complexity that comes with it. The idea here is to keep the mental model simple: every `[]` block runs independently and automatically yields after each logical line of code.

There is also an event/messaging system:

- Blocks can be triggered by events: `[>event params ...]`

- Blocks can wait for events internally

- Events can also be injected from interrupts

This makes it easy to model embedded systems as independent state machines while still monitoring device state.

Right now it’s mostly an interpreter written in Rust, but it can also emit C code. I’m still experimenting with syntax.

Example:

    module WaterTank {
      type Direction = UP|DOWN
      let direction = UP
      let current = 0

      [>open_valve direction |> direction]
      [>update level |> current]

      [
        for 0..30 |> iteration {
          when direction {
            UP   -> !update level=current + 1 |> min(100)
            DOWN -> !update level=current - 1 |> max(0)
          } ~
          %'{iteration} {current}'
        }
      ]

      [>update level |> when {
          0..10  -> %'shallow'
          11..15 -> %'good'
          16..   -> %'too much!' then !open_valve direction=DOWN
        }
      ]
    }
Since subreddits related to identifying AI images/videos got very popular, my wife started to send me cute AI generated videos, older family members can't distinguish AI videos at all, I've decided to code a weekend side project to train their Spidey sense for AI content.

https://IsThisAI.lol

The content is hand picked from tiktok, Instagram, Facebook, Reddit and other AI generating platforms.

Honestly I don't know where I'm going with this, but I felt the urge to create it, so here it is.

I learned how to optimize serving assets on CloudFlare.

Feedback welcome.

I'm still having a lot of fun releasing daily puzzles for my game Tiled Words: https://tiledwords.com

It just won an award! It was awarded Players' Choice out of 700 daily web games at the Playlin awards: https://playlin.io/news/announcing-the-2025-playlin-awards-w...

Right now around 3,500 people play every day which kind of blows my mind!

It's free, web-based, and responsive. It was inspired by board games and crosswords.

I've been troubleshooting some iOS performance issues, working on user accounts, and getting ready to launch player-submitted puzzles. It's slow going though because I have limited free time and making the puzzles is time consuming!

Here's an article with more info about the award: https://cogconnected.com/2026/03/tiled-words-crowned-the-pla...

Im building https://trypixie.com to legally employ my 7 year old child, save on taxes and contribute to her Roth IRA.

Im also building https://www.keepfiled.com, a microsaas to save emails (or email attachments) to google drive

I almost forgot, I also built https://statphone.com - One emergency number that rings your whole family and breaks through DND.

I love building. I built all these for myself. unfortunately I suck at marketing so I barely have customers.

I'm using TimescaleDB to manage 450GB of stocks and options data from Massive (what used to be polygon.io), and I've been getting LLM agents to iterate over academic research to see if anything works to improve trading with backtesting.

It's an addictive slot machine where I pull the lever and the dials spin as I hope for the sound of a jackpot. 999 out of 1000 winning models do so because of look-ahead bias, which makes them look great but are actually bad models. For example, one didn't convert the time zone from UTC to EST, so five hours of future knowledge got baked into the model. Another used `SELECT DISTINCT`, which chose a value at random during a 0–5 hour window — meaning 0–5 hours of future knowledge got baked in. That one was somehow related to Timescale hypertables.

Now I'm applying the VIX formula to TSLA options trades to see if I can take research papers about trading with VIX and apply them to TSLA.

Whatever the case, I've learned a lot about working with LLM agents and time-series data, and very little about actually trading equities and derivatives.

(I did 100% beat SPY with a train/out-of-sample test, though not by much. I'll likely share it here in a couple weeks. It automates trading on Robinhood, which is pretty cool.)

Cooking up a NSFW filter for marginalia search.

Pipeline so far has gone like this:

* Use the search engine's API to query a bunch of depravity

* Use qwen3.5 to label the search results and generate training data

* Try to use fasttext to create a fast model

* Get good results in theory but awful results in practice because it picks up weird features

* Yolo implement a small neural net using hand selected input features instead

* Train using fasttext training data

* Do a pretty good job

* for (;;) Apply the model to real a world link database and relabel positive findings with qwen to provide more training data

Currently this is where I'm at

  Accuracy:   90.90%
  True  Positive: 1021
  False Positive: 154
  True  Negative: 2816
  False Negative: 230
  Precision:  0.8689
  Recall:     0.8161
  F1:         0.8417
There's a lot of vague middle ground and many of the false positives are arguably just mislabeled.
Well, I just jumped full time on IronCalc[1] a fully open source, light and fast spreadsheet engine designed and build from the ground up.

I have been working on it as side project for over two years and now, with funding from the EU for the next 2.5 years, I hope I can make of it a real product for everyone to use that can compete with the likes of Excel and Googl;e Sheets.

I can oly say, I am overly, off the Moon excited

[1]: https://www.ironcalc.com

My wife and I continue to work on Uruky, a EU-based Kagi alternative [1]. Since last month we got deals with a couple more search providers but we’re still waiting for EUSP/STAAN to provide us with an API key (we have progressed through a few more forms and signatures and legal stuff, though).

We’ve continued to get some paid customers and have exited beta last week, given everyone seemed to be quite satisfied and there hadn't been requests for changes, only some specific search providers.

Because of bots there isn’t a free trial easily available, but if you’re a human and you’d like to try it for a couple of days for free, reach out with your account number and we’ll set that up!

Thanks.

P.S.: Because people have asked before, our tech stack is intentionally very "boring" (as in, it generates and serves the HTML + bits of JS to enhance settings and such — search can be done without JS), using Deno in the backend (for easier TypeScript), PostgreSQL for the DB, and Docker for easier deploying.

[1] https://uruky.com

I'm working on a self-hosted search service called Hister with the goal to reduce my dependence on online search engines.

Hister is basically a full text indexer which saves all the visited pages rendered by your browser. It provides a flexible web (and terminal) search interface & query language to explore previously visited content with ease or quickly fall back to traditional search engines.

Here's a little summary of the background/motivation/beginnings: https://hister.org/posts/how-i-cut-my-google-search-dependen...

Project site: https://github.com/asciimoo/hister

Website: https://hister.org/ Read-only demo: https://demo.hister.org/

I live in an old house.

The front bump out leaks when we get driving rain. I installed some flashing but that wasn't enough, it's still leaking. So I'm working on that so I can close up the big hole in the ceiling some day.

The prior owners filled in the old coal chute with literal bags of cement sort of artistically placed in the hole in the brick foundation. So I'm trying to figure out what masonry tools and skills I'll need to close it up proper.

I'd like to build my kids a playhouse of some sort, sketching out some designs for that.

https://github.com/jsattler/BetterCapture

I'm building a lightweight screen recorder for macOS. It supports lots of features you'd expect from a professional screen recorder such as ProRes 422/4444, HEVC/H.265, and H.264, capturing alpha channels and supports HDR. Frame rates from 24 to 120fps. Can capture system audio and mic simultaneously. You can also exclude specific things from recordings, like the menu bar, dock, or wallpaper.

No tracking, no analytics, no cloud uploads, no account. MIT licensed. Everything stays on your Mac. Still early, but happy to hear feedback!

One month ago, I purchased this small eink reader (Xteink 4) and I've been loving reading on that device. It made me read much more in the past month (already more than 50% through Fall or Dodge in Hell).

The stock firmware is horrible but the community has this firmware called CrossPoint. I wanted to be able to upload, manage files etc. from my iPhone on the go and also send over web articles. So I build this app CrossPoint Sync https://crosspointsync.com to do just that.

I've already published it on App Store and pending publishing on Android. The community is niche and has also been using the app, so its been fun building for my use and in turn also getting good feedback from community.

If you are using the Xteink and CrossPoint firmware, then give the app a try.

iOS App Store: https://apps.apple.com/app/crosspoint-sync/id6758985427

Android Beta: https://crosspointsync.com/android/join-beta

GitHub: https://github.com/zabirauf/crosspoint-sync

When GPT-4.5 came out, I used it to write a couple of novels for my son. I had some free API credits, and used a naive workflow:

while word_count < x: write_next_chapter(outline, summary_so_far, previous_chapter_text)

It worked well enough that the novels were better than the median novel aimed at my son's age group, but I'm pretty sure we can do better.

There are web-based tools to help fiction authors to keep their stories straight: they use some data structures to store details about the world, the characters, the plot, the subplots etc., and how they change during each chapter.

I am trying to make an agent skill that has two parts:

- the SKILL.md that defines the goal (what criteria the novel must satisfy to be complete and good) and the general method

- some other md files that describe different roles (planner, author, editor, lore keeper, plot consistency checker etc.)

- a python file which the agent uses as the interface into the data structure (I want it to have a strong structure, and I don't like the idea of the agent just editing a bunch of json files directly)

For the first few iterations, I'm using cheap models (Gemini Flash ones) to generate the stories, and Opus 4.6 to provide feedback. Once I think the skill is described sufficiently well, I'll use a more powerful model for generation and read the resulting novel myself.

I vibe coded a tiny MUD-style world sim where LLMs control each character. It's basically a little toy sandbox where LLMs can play around. There's no real goal to this, I just thought that it would be fun, like a more advanced tamagochi.

One of the issues I encountered initially was that the LLMs were repeating a small set of actions and never trying some of the more experimental actions. With a bit of prompt tweaking I was able to get them to branch out a bit, but it still feels like there's a lot of room for improvement on that front. I still haven't figured out how to instill a creative spark for exploration through my prompting skills.

It has been quite exciting to see how quickly a few simple rules can lead to emergent storytelling. One of the actions I added was the ability for the agents to pray to the creator of their world (i.e. me) along with the ability for me to respond in a separate cycle. The first prayer I received was from an agent that decided to wade into a river and kneel, just to offer a moment in stillness. Imagining it is still making me smile.

Unfortunately, I don't have access to enough compute to run a bigger experiment, but I think it would be really interesting to create lots of seed worlds / codebases which exist in a loop. With the twist being that after each cycle the agents can all suggest changes to their world. This would've previously been quite difficult, but I think it could be viable with current agentic programming capabilities. I wonder what a world with different LLM distributions would look like after a few iterations. What kind of worlds would Gemini, Claude, Grok, or ChatGPT create? And what if they're all put in the same world, which ones become the dominant force?

After more than a decade of developing various websites under the brand https://anoa.ca I am pivoting the brand entirely to a creative niche: portfolio websites for the film industry. I created a new, general brand for the rest of my front end development work: https://lodewell.co

It feels like a small change, but it really makes sense in my brain and I'm glad I finally made it happen. My services feel properly positioned under these distinct brands. Now of course when I get time I need to redesign both of my own websites.

Ideas wise... I like the static website world. I use 11ty, but there are others moving in this direction. Clean, performant, simple html / css / js websites that should last for decades. I like the idea of publishing them to IPFS, creating an indie web with some permanence to it.

We just launched a portfolio for Director of Photography Joel Honeywell: https://joelhoneywell.com/

This is a simple static site, no CMS, built with 11ty.

I'm writing an essay where I get into how I use GNU Emacs along with gptel (a simple LLM client for Emacs) and Google's Gemini-3 family of models to turn a 1970s-vintage text editor into a futuristic language-learning platform to help me study Latin. I want to show how I liberate poorly aligned, pixelated PDF image scans of century-old Latin textbooks from the Internet Archive and transform them into glorious Org mode documents while preserving important typographic details, nicely formatted tables, and some semantic document metadata. I also want to outline how to integrate a local lemmatizer and dictionary to quickly perform Latin-to-English lookups, and how to send whole sentences to Gemini for a detailed morphological and grammatical breakdown.

I also intend to dig into how to integrate Emacs with tools such as yt-dlp and patreon-dl to grab Latin-language audio content from the Internet, transcode the audio with ffmpeg, load it into the LLM's context window, and send it off for transcription. If the essay isn't already too long, I'll demonstrate how to gather forced-alignment data using local models such as wav2vec2-latin so I can play audio snippets of Latin texts directly from a transcription buffer in Emacs. Lastly, I want show how to leverage Gemini to automatically create multimedia flash cards in Org mode using the anki-editor Emacs minor mode for sentence mining.

Wanted to see if AI could figure out how to compress executable binaries better than existing generic tools without me actually knowing much about compression engineering or ELF internals.

The result is an experiment called fesh. It works strictly as a deterministic pre-processor pipeline wrapping LZMA (xz). The AI kept identifying "structural entropy boundaries" and instructed me to extract near-branches, normalize jump tables, rewrite .eh_frame DWARF pointers to absolute image bases, delta-encode ELF .rela structs with ZigZag mappings, and force column transpositions before compressing them in separated LZMA channels.

Surprisingly, it actually works. The CI strictly verifies that compression is perfectly reversible (bit-for-bit identity match) across 103 Alpine Linux x86_64 packages. According to the benchmarks, it consistently produces smaller payloads than xz -9e --x86 (XZ BCJ), ZSTD, and Brotli across the board—averaging around 6% smaller than maximum XZ BCJ limits.

I honestly have no idea how much of this is genuinely novel versus standard practices in extreme binary packing (like Crinkler/UPX).

Repo: https://github.com/mohsen1/fesh

For those who know this stuff:

Does this architecture have any actual merits for standard distribution formats, or is this just overfitting the LZMA dictionary to Alpine's compiler outputs? I'd love to hear from people who actually understand compression math.

https://finbodhi.com — It's an app for your financial journey. It helps you track, understand, benchmark and plan your finances - with double-entry accounting. You own your financial data. It’s local-first, syncs across devices, and everything’s encrypted in transit (we do have your email for subscription tracking and analytics).

Supports multiple-accounts (track as a family or even as an advisor), multi-currency, a custom sheet/calculator to operate on your accounts (calculate taxes etc) and much more. Most recently, we added support for benchmarking (create custom dashboards tracking nav and value chart of subsets of your portfolio) and US stocks, etfs etc.

We also write about like:

How fund performance explain part of returns, rest is explained by timing. And ways to tease those out: https://finbodhi.com/docs/blog/benchmark-scenarios

Or, understanding double entry account: https://finbodhi.com/docs/understanding-double-entry

Continuing to make fantastic progress on Breaka Club, where we teach kids to code, be creative and make games:

https://breaka.club/blog/why-were-building-clubs-for-kids

The recent Netflix Games edition of Overcooked with K-Pop Demon Hunters is cool, but not nearly as cool as kids coding and playing their way through Overcooked levels in our custom educational mod for Overcooked:

https://youtu.be/ITWSL5lTLig

I'm also maintaining GodotJS, strongly typed TypeScript bindings for Godot, which is used to build the Breaka Club RPG (see first link):

https://github.com/godotjs/GodotJS

And last week I also put together the first release of MoonSharp in ~10 years; Lua runtime for Unity. That's not for Breaka Club though, I also consult for Berserk Games on Tabletop Simulator:

https://github.com/moonsharp-devs/moonsharp/releases

https://e.ml A free inbrowser inbox for inspecting .eml (email) files. There are many one-off .eml viewers around but I found myself inspecting the same files many times which evolved into this concept of an inbrowser inbox. Plus, world's shortest domain (3 characters) and the domain is an exact match for the file extension, a fun novelty. Very easy to remember!

https://milliondollarchat.com a reimagining of the million dollar homepage for the AI age. Not useful, but fun. A free to use chatbot that anyone can influence by adding to the context. The chatbot's "thoughts" are streamed to all visitors.

I'm working on a personal recipe site called Struggle Meals, in the genre of https://traumbooks.itch.io/the-sad-bastard-cookbook and https://old.reddit.com/r/shittyfoodporn/, for food I ate when I felt too poor / depressed / tired / chronically unwell. Some of them are just normal adulting recipes. Some are meal prep. Some are too struggly for a legitimate recipe site.

I have some barebones content at https://struggle-meals.wonger.dev/ and will be working on the design over the next few weeks. Some decisions I'm thinking about:

- balancing between personal convenience and brevity vs being potentially useful for other people. E.g. should I tag everything that's vegan/vegetarian/GF/dairyfree/halal/etc? Should I take pictures of everything? (I'd rather not)

- how simple can I make a recipe without ruining it? E.g. can I omit every measurement? should I separate nice-to-have ingredients from critical ingredients? how do I make that look uncomplicated? (Sometimes the worst thing is having too many options)

- if/how to price things? Depends on region, season, discounts, etc

These past weeks I finally organized some ideas I'd been sitting on and wrote two posts:

From Agentic Reasoning to Deterministic Scripts: on why AI agents shouldn't reason from scratch on every repeated task, and how execution history could compile into deterministic automations

https://juanpabloaj.com/2026/03/08/from-agentic-reasoning-to...

The silent filter: on cognitive erosion as a quieter, more probable civilizational risk than a catastrophic event

https://juanpabloaj.com/2026/02/27/the-silent-filter/

For language geeks: https://kpt.datamediate.com

KPT is a language app specifically targeted at explainable verb conjugation for highly inflected/agglutinative languages. Currently works for Finnish, Ukrainian, Welsh, Turkish and Tamil.

These are really hard languages to learn for most speakers of European languages, particularly English - we're not used to complex verb conjugations, they're hard to memorise and the rules often feel quite arbitrary. Every other conjugation practice app just tells you right/wrong with no explanation, which doesn't really help you learn when there are literally hundreds of rules to get right.

The interesting part was using an LLM to create a complete machine-executable set of conjugation rules, which are optimized for human explainability, and an engine to diagnose which rule is at fault when you get it wrong. There's several hundred rules needed for each language in order to cover all exceptions.

NB as a bonus it also works fully offline because my best practice hours are when I'm travelling and have poor connectivity.

I made an idle version of the 1999 MMORPG "EverQuest". There's maybe around 50 people playing at any given time and has a enthusiastic discord group for it. It's relatively fully-featured to the original game, and has a lot of new mechanics to make the idle format work well. The 3D graphics aspect of it is really more of a screensaver, though, and all game interactions are done through menus.

I recently converted a bunch of stuff to be client side instead of server side (turns out running a real-time MMORPG server is expensive) so there's a new round of bugs I'm still resolving, but it's still fun to play:

https://www.idlequest.net/

I’m building Sift, a drop-in gateway that makes LLM tool use far more reliable when tools return large JSON payloads. The usual pattern is that agents paste raw tool outputs directly into the prompt, which quickly blows up context, causes truncation/compaction, and leads to incorrect answers once earlier results disappear. Sift sits between the model and its tools (MCP, APIs, CLIs), stores the full payload locally as an artifact (indexed in SQLite), and returns only a compact schema plus an artifact_id. When the model needs something from the data, it runs a tiny Python query against the stored artifact instead of reasoning over thousands of tokens of JSON. In benchmarks across 103 questions on real datasets, this approach cut input tokens by ~95% and improved answer accuracy from ~33% to ~99%. Repo: https://github.com/lourencomaciel/sift-gateway.
I'm building two things, both game related.

Over the last year I've been hacking on Table Slayer [0] a web tool for projecting DnD maps on purpose built TV-in-table setups. Right now I'm working on making hardware that supports large format touch displays.

Since I also play boardgames, this past month I threw together Counter Slayer [1], which helps you generate STLs for box game inserts.

Both projects are open source and available on GitHub. I've had fun building software for hobbies that are mostly tactile.

[0]: https://tableslayer.com

[1]: https://counterslayer.com

Tool that lets you build shortcuts and custom functionality for most macOS apps. You write JS snippets like this:

    const app = new App("com.apple.finder")
and then query for elements:

    const window = app.$({role: "window"})
    const someButton = window.$(/* another query */)
and then do stuff with it:

    someButton.press()
and you can bind everything to very specific shortcuts like "press and hold cmd, then scroll mouse wheel up"

Targeted towards music producers and AI (there's one collection of snippets that starts an MCP server and exposes some basic functionality) in the beginning.

I used Rust to build a terminal based IDE for parallel coding cli workflow. It works with Claude Code, Codex and Gemini!

My favorite features are: - custom layout and drag and drop to change window - auto resume to last working session on app starting - notifications - copy and paste images directly to Claude Code/Codex/Gemini CLI - file tree with right click to insert file path to the session directly

OH and it works on both Windows and MacOS! Fully open source too!

https://github.com/oso95/Codirigent

PC Part Picker for hi-fi stereos: https://buildhifi.com/

I've wanted this for a long time, so I finally started building it. I've had a lot fun!

- Graph-based signal flow: Products become nodes, connections are edges inferred from port compatibility (digital, analog, phono, speaker-level domains)

- Port profile system: Standardized port definitions (direction, domain, connector, channel mode) enable automatic connection inference

- Rule engine: Pluggable rules check completeness, power matching, phono stage requirements, DAC needs, and more

https://github.com/hsaliak/std_slop a sqlite centric coding agent. it does a few things differently. 1 - context is completely managed in sqlite 2 - it has a "mail model" basically, it uses the git email workflow as the agentic plan => code => review loop. You become "linus" in this mode, and the patches are guaranteed bisect safe. 3 - everything is done in a javascript control plane, no free form tools like read / write / patch. Those are available but within a javascript repl. So the agent works on that. You get other benefits such as being able to persist js functions in the database for future use that's specific to your codebase.

Give it a try!

I just started building an operating system that will be written entirely in one text file. This text file includes in order: a readme, a RISC-V assembly boot code, then the rest. You run it by compiling the initial boot code with a RISC-V assembler, then you concatenate the binary with the whole text file itself. Then when you run it, the boot code will compile the rest of the text file (the operating system), including higher level language compilers that the rest of the system will be written in.

This is the kind of project that creates something from as little as possible, where the only things you need to get started are a very basic RISC-V assembler and a computer or emulator to run it on.

I don't have anything interesting to show yet because I just started yesterday, but one day I will show you.

A soccer web game where you are the coach and your only possible interaction is shouting (ie typing) messages to your players from the sidelines. An LLM interpret your messages and pass instructions into the game engine.

It is a pretty fun project

My hobby x86 kernel. I'm targeting my 80486DX2-66 PC with 32MB of RAM. This project has had a few false starts over the years, where I lacked the prerequisite knowledge to be able to properly debug things. So while the initial commit is from 2020, most of the progress is from the ~180 or so commits I've done in the last month since I picked it up again in early February. A month ago it booted from a floppy and printed some debug info to the screen showing it set up GDT, IDT and some static page tables. Now I have basic virtual memory with kmalloc()/kfree(), task switching, user mode and a few syscalls, and just this past weekend I got my floppy driver to a state where it can now (semi-)reliably detect and read data off floppy disks. I already have a userspace prototype of an ext2 parser I wrote for this in 2024, so all I need to do now is to bring that code in to the kernel and I should have filesystem support!

It's been a ton of fun to work on. Every subsystem is still flaky so I run into the wackiest bugs imaginable. I'm really grateful for the resources[1] and incredible tooling[2] that enable me to work out my frequent mistakes. I can hardly fathom how Torvalds did this with just his PC running Minix!

No idea how long I'll keep working on it. I think I'd be pretty happy if I got a real-world, non-trivial program running on top of it, but in the meantime it is serving as a good distraction from life worries at least :]

[1]: Intel 80386 Reference Manual, Linux man pages, wiki.osdev.org, various datasheets and the occasional query to ChatGPT free tier.

[2]: QEMU+gdb, Bochs, GCC 9 & binutils

An immobiliser for my car. Had trouble finding devices that would cover the specific attack vectors my car would be susceptible to. Checked my insurance, no specific clauses around immobilisers, check relevant road laws, no issues there.

I have a fairly novel approach to operating it, and in the case of one time theft prevention security through obscurity is actually a great approach. The assailant only has a short time to pull the car apart and solve the puzzle, couple that with genuine security techniques, a physical aspect, and it should be pretty foolproof.

It can still be towed away, etc, not much to be done there except brute force physical blocks. Most cars get stolen here to do crime in that night so it's not as common.

I have been working on quite a bit of things… but lately I went back to my hobby project of the last year:

https://DuoBook.co

It’s like netflix for language, where users can select/create their personal bilangual stories.

I had quite a lot of feedback from HN, friends, random people on the internet and trying to solve the common pain points and find my way around to make it geniunely useful.

- Most people said it’s hard to come up with a story, so I added url grounding. Also added buttons (including HN :)) so people can just click click and get their stories at their level with their interests.

- Made sure people can generate stories without ever signing up

- Each word is highlighted while being read, and the meanings can be checked with a tap. I also added an option for users to read the sentence for being checked how good their pronounciation is.

- Benchmarked 7 different models to get the fastest & highest quality story generation (it’s gemini now) and it’s insanely fast. I might share more about it on the webpage because I am an engineer and I enjoy this stuff lol.

- Added CSV import in Use my words so Anki users can just import their words to study.

- Also people can download their stories as pdf so they can send it to their kindles.

- I am working on a ChatGPT app, so people can just say “@DuoBook give me a Dutch/English story on latest Iranian events” within ChatGPT, but I am a bit afraid that it might be costly lol.

As a personal learning project on how to write efficient GPU code I'm trying to implement different shortest-path algorithms on the GPU. This is notoriously one of the cases where a simple algorithm like Dijkstra on the CPU will beat many implementations on the GPU.

It has been a lot of fun to learn about Vulkan / GLSL and the GPU execution model to figure out why the CPU is so much faster than the GPU. I'll be open sourcing the code soon but so far I'm documenting my journey in a series of blog posts. First one of the series is https://www.execfoo.de/blog/deltastep.html

I've had a flurry of activity working with emacs, breaking out some things that were previously "Steve stuff" inside my local configuration into real packages.

One thing that I've been very happy with has been "org-people", now on MELPA, which allows contact-management within Emacs via org-mode blocks and properties. It works so well with the native facilities that it's a joy to work on.

I've been learning a lot of new things while I've been expanding it now it has a bigger audience (e.g. "cl-defstruct" was a pleasant surprise).

https://github.com/skx/org-people/

Because 9 out 10 Startups fail, early startup investing is not investing, it’s philanthropy with a potential upside. So I’ve created a new game of Venture call VentureStaking where multiple people come together to form a grant for a founder (no debt / no equity) to spend a year researching a problem (ie Thiel Fellowship) and then if that founder discovers something interesting, the grantors can invest up to 10x their grant amount in equity. So, for example, a $100,000 grant creates a potential $1MM equity round to keep the momentum going. Thus, a VentureStaker can give $10 grants to 100 Founders to discover the 3-4 that come up with a great opportunity and invest 10x in those rounds. The SEC has been vetting this system for 8 months and cannot conclude it’s a security which means that we can operate VentureStaking without expensive legal compliance. SEC rules are only triggered at the first equity round and RegCF can allow multiple retail investors in as one line item on the cap table. So now, it’s a game of Discovery to start and smarter investing later. To learn more, go to Doriot dot com.
I've been plugging away on MadHatter (https://madhatter.app), a web tool for knitting/crochet projects. It works best on desktop!

Why? Many yarncrafters painstakingly build spreadsheets, or try to bend existing general purpose pixel editors to their will. It's time consuming & frustrating.

Along the way, I've solved a bunch of problems:

  - Automatic decreases (shapes the hat) / overstitching markers (shows when multiple colors are used in the same row)
  - Parameterized designs, like waves, trees, geometric shapes. No more manually moving an object by a couple of pixels, it's a simple click & drag.
  - Color palette merging (can't delete a color if you already use it in a pattern!)
  - Export to PDF (so you can print it or stick it on a tablet)
  - Repeat previews (visualize the pattern as it repeats horizontally)
The core feature that makes this more useful than most general purpose editors is that the canvas is continuous.

If you drag a shape near the right edge of the canvas, you'll see it "wrapping around" onto the right edge.

This reflects the 3D reality of a hat!