Mikko Mononen

@mikkomononen.bsky.social

Coder and woodworker. Author of Recast&Detour and NanoVG. Previously at Epic Games, Unity, Tinkercad, Crytek, demoscene. https://github.com/memononen

I’m happy to announce the release of a new open source 3D physics engine called Box3D. I’ve been working on this project for a few years now, but it represents over 20 years of experience writing physics engines for games. Read more here: box2d.org/posts/2026/0...

Announcing Box3D

I’m happy to announce the release of Box3D, an open source 3D physics engine. It is now available on GitHub. Box3D repository You can think of Box3D as a fork of Box2D, extended with many features nee...

box2d.org

I recently completed my PhD thesis, where I developed algorithms for making geometric inferences from imperfect data (i.e. incomplete and inaccurate observations/representations of shapes, like broken meshes or point clouds). A thread 🧵:

Bild

Links... links are special. Usually you pick the text style from the previous character, so that if you write something after a bold text, it will be bold. Except links, where the style does not "bleed". It's ok to type in the middle, though.

I have been working recently on input rules for the skribidi editor. Stuff like: - what happens when you press enter after a header - automatically starting a list when you start a line with -, - or stuff like keeping the tabs in taps when typing code (who uses spaces, anyways!)

So nice to finally get to the actual rich text editing, not just the stuff that enables it. Still ways to go, but baby steps. There's a lot of rich text editing tricks to discover, like that when you press enter after a header, you will automatically get body text style.

I've been working on paragraph styling support for skribidi. My goal is to support roughly markdown for the rich text rendering and editing. I'm trying my best to not make things complicated. For example I really would like to avoid adding hierarchy to the text.

For the past weeks I have been writing and refactoring things to get rich text editing to work in Scribidi. It's so close now. There are always tons of small details, like changing the caret to preview the italic/oblique.

The hardest part about rich text editing so far has been trying to remember that you have to actually have bold, italic and bold+italic fonts loaded if you want to see them bold and italics. Gladly harfbuzz has embolden and slant so that I can fake it.

I've been looking a nice representation of style spans for the Skribidi rich text editor. Something that let's me store info: "from here to there text is bold". It should also support combining such spans using add or remove a span. And I wanted it to be "not much more complex than bit vector".

I've been working on things that will allow users of Skribidi to create hyperlink or button kind of interactions. The biggest struggle is how to make things simple. I dont want to include an UI library in the text library (that would be another project). But it should not be too hard either.

I have been working on inline objects for Skribidi. Things like icons and stuff that you want to embed in the text. This merited another visit to the vertical text alignment rabbit hole. A lot of frustration and hopefully a solution.

Bild

I have been working on text alignment, wrapping and overflow for Skribidi. It's been pretty hard to find a good reference since the CSS in that area does not feel very solid to me. Ended up with some parts of CSS and some parts of Figma.

Any caveas using symlinks on Windows? Context: In the Skribidi project, I have a set of assets that the example needs (fonts, etc). Currently they are copied to the bin folder in windows, and symlink on other systems. I wonder if there's something with Windows symlinks that will say meh?

One of the text input features I have been wanting to try out is input method editors (IME). Felt like 🪱🥫so I have been postponing it. The IME itself is not part of Skribidi, it should be handled by the platform abstraction, but showing the IME composition is.

Spent couple of hours trying to get the Skribidi example to run on the web. Tried to follow a couple of examples, but they just did not work, or I did not have something installed (e.g. emcmake). <sigh> Maybe one day I'll try that again.