Posted by david927 3/30/2025
Ask HN: What are you working on? (March 2025)
- A library for fast, accurate matching (geocoding) of UK addresses that uses Splink under the hood: https://github.com/RobinL/uk_address_matcher
- An npm library that generates maths mental arithmetic problems that align to the UK national curriculum, that can be used to power maths games: https://github.com/RobinL/maths-game-problem-generator
- A breakout maths game that uses the above: https://github.com/RobinL/maths-game-problem-generator
- Build dependency graph from dependency pairs.
- Generate the topological sort from the graph.
- Ordered parallel task sets (i.e. subsets of nodes that can run in parallel, within the overall topological order).
- Cycle detection and reporting the cyclical nodes.
https://github.com/williamw520/toposort
It's feature complete, but I still have problem publishing it as a library. Kept getting "unable to find module 'toposort'" error when importing it in a separate project.
Edit: Alright, finally figured out why the module was not published. The default project creation template in Zig 15 uses createModule() in the generated build.zig, which creates a private module. Switched to use addModule() to create a public module and my library can be imported and used by other projects.
I've been playing around with defining a standard that is easy to implement for serializing tabular data using the ASCII delimiters.
So far I've got:
<group> ::= GS | <record>
<record> ::= RS <group> | <unit>
<unit> ::= <high-ascii> | US <record>
<high-ascii> ::= 0x20 <unit> | ... | 0x7E <unit>
Which seems like a good way to avoid all the trouble of escaping separators in CSV files, if a bit clunky since you need to end each record with US RS and each file with US RS GS.I also accidentally found another test that _all_ LLMs fail at (including all the reasoning models): the ability to decide if a given string is derivable from a grammar. I was asking for tests before I started coding and _every_ frontier model gave me obvious garbage. I've not seen such bad performance on such low hanging fruit for automated training in over a year.
Don't forget File Separator 0x1c
https://apps.apple.com/us/app/woor-vocabulary/id6740453162
Initially started as small webapp to help me learn Dutch words. Made it out of the frustration that in Duolingo I cannot specify the words I want to learn and Quizlet exercising and progression felt limited. I also wanted to target the specific meanings of the words.
Then I decided to try out CapacitorJS and wrapped it into the mobile app. For now only English is available as the target language as it was easier to validate the content, but more languages are coming.
Along with it also started the podcast with language tutors about the teaching & tech. Please find the links here: https://www.woor.app/tutorandtech
https://tendollaradventure.com
The book has been a fun endeavor in both writing the manuscript and code! On the latter, I wrote an exporter for Twinery to Org Mode and an Emacs Org export backend to do the reverse.
The book is currently open to beta readers - Happy to let a few more in through the sign up page here: https://tendollaradventure.com/#get-notified
I have an original Apple LaserWriter which I can use through the serial port (but it won't print). I've pulled the ROM's in it and got them working through the MAME game emulator. This is great as I can debug the 68000 code, for instance I was able to reverse engineer the random number generator and the password for internaldict. Ghostscript is handy as well although I try not to rely on it too much as there are some differences between the two implementations.
The plan is to keep it as close as possible to the LaserWriter so that means level 1. PostScript is quite interesting in that it starts executing PostScript code as soon as you power on the printer. That code is responsible for initialising the printer, handling errors, managing the serial ports then receiving and executing the incoming PostScript job. You can load and dump this internal code with a simple script.
The interpreter is complete along with the 125 programming operators, core types and error handlers. The next stage is the graphics operators. I'm going to target PDF for output as the drawing model is the same as PostScript. I'm assuming that handling the fonts is going to be the bulk of the work.
It's written in Rust, so far about 14,000 lines and 650 unit tests. In some ways it would have been easier in C as I could have followed the exact memory layout in the original interpreter however I really dislike C.
JavaScript works, scrolling - but layout is still being figured out! Also missing are form controls, etc etc.
It's meant to just be text (no images, etc) and to work in your terminal. It's NOT meant to alter/condense the layout to something like "reader mode" - just to be a faithful "GUI -> TUI" rendering in the terminal.
Like Lynx, but upgraded for the modern web. So maybe I'll call it Jaguar, but probably not! The idea is that other options like Brow.sh may be overcomplicated, hard to maintain, focused on a kind of graphical fidelity. Whereas this is more BBS style text only, but still usable. Minimum viable text, so to speak.
Leave your email if you want to know when it's ready to try out: https://tally.so/r/wbzYzo
I made a v1 about 5 years ago just for my daughter because I didn’t like any of the apps available. They were just games with a sprinkling of learning on top. She’d spend hours on there and learn F all except how to be addicted to dopamine.
So I made something very clean and very simple that we’d do together for 3 minutes a day. She learned to read really fast!
But… then I forgot all about it for 4 years, only remembering it when my second daughter needed to learn to read. She’s 3 and I taught her the first 26 sounds already.
At this point I wondered if it’d be good for other people so I contacted a phonics expert and they liked it too, so we spent the last 6 months making it into a proper app.
https://apps.apple.com/app/the-phonics-app/id6742649576
It’s going well so far. Lots of lovely messages from parents! If you have a 3-6 y old please let me know what you think of it!
I'm building the 2d parts of it in the GLFW library and modern OpenGL (this will eventually also be used as an overlay system when I get to the 3d portions of the project). I'm also adding in simple text menuing so I can quickly build text prototypes of the games so I can also be working on game data structures and basic mechanics while the graphical engine comes together.
So far I've started two basic games, an old school rogue-like on a large scale using tiles and a similar game that combines factory building with the rogue-like parts. I have plans to bring in some other games that will stretch different parts of the engine.