site banner

Tinker Tuesday

This was really popular last week, I was really impressed with how many hardworking hobbyist type people we have here. It got me motivated to do some of my own things.

As a reminder, this thread is for anyone working on personal projects to share their progress, and hold themselves somewhat accountable to a group of peers. We can coordinate weekly standup type meetings if their is interest.

Post your project, your progress from last week, and what you hope to accomplish this week.

Also naming the thread. Tinker Tuesday or taskmaster Tuesday, or something else? I switched the thread to Tuesday instead of Monday because the culture war thread refreshes on Monday.

7
Jump in the discussion.

No email address required.

I have two software projects I'm tinkering on.

The first one is a display library for the Zig programming language. You'd use it to get a platform-agnostic way of rendering graphics, so you can make really tiny (a handful of kilobytes!) graphical applications that compile to every platform (well, at least Windows, Mac, and Linux). For fun and bragging rights I'm making it ridiculously backwards-compatible, so it's e.g. supporting Windows all the way back to Windows 95 (not especially hard, the core Windows API hasn't really changed that much since the 90s).

My second projects is a superoptimizer for the 6502 CPU. It takes CPU/memory states as input, and bruteforces all possible assembly instructions until it finds the shortest/fastest* possible program that satisfies some output for each possible input. The 6502 was the CPU used in the Nintendo NES, so the program would be pretty useful for making extremely optimized routines for homebrew games and such (given that the generated code stays below a few bytes). I'm also writing a blog post in parallel where I explain all the little tricks I'm doing to speed up the search, which I'll probably post to Hacker News or something after I'm done.

* Actually it prints all** programs on the speed/size tradeoff frontier, though usually it's just one.

** Up to a configurable cycle limit, I have not actually solved the halting problem.