Long time no see

Ughh, that's been a while. I'm currently dealing with a lot of things at once so I figured: Why shouldn't I start to write about them again? So here we go

School - HEG - Writing a small server in Rust

Since one of the rather fun parts of the book we all grew to love so much is the chapter which explains how to write your own web server I thought that this might be a cool new intermediate goal for the "all-day program". So last week we already started with programming a simple app in plain rust. That is in rust without using a framework or library. To be more specific, we implemented the guessing game.

This week we started to explore the HTTP protocol in a very simple form. We took a look at all the possible methods that are there by using the very excellet playground site https://petstore.swagger.io/. In a playful way we discovered GET and POST requests and could look at the responses that were coming back. In the end of the unit, we then went over to the rust side of things and discussed how to do a simple GET request with reqwest and tokio in rust and what async means in a nutshell.

progress on the geo PRs

Currently I'm working on an alternative approach to geometric boolean operations in the geo rust library. Although the current implementation that already existed beforehand is way faster, it has one flaw: Due to floating point precision issues all of the operations might panic in certain situations. To make things worse: There's no real way of refactoring the algo into a variation that returns a Result since the panic is happening in an implementation of PartialOrd which is required by the algorithm to work (since it does some sorting at some point). And as if that isn't enough already there's yet another problem: In certain other sitatuions you can't even work around that problem by catching the panic with catch_unwind. Unfortunately one of those scenarios is any WASM app. That means if the app panics due to the faulty boolops, all your progress might be lost in the browser app which is a big nono.

And that's basically pretty much the motivation for all of the PRs I'm making. The new approach just triangulates the combined geometries of the geometric objects that should be boolop-ed and then selects the triangles that fit the current operation (union, difference, intersection) and stitches them together again. Currently we're close to merging part 2/3 of the algo which is the stitching algo

And here's a link to it: https://github.com/georust/geo/pull/1087

Btw here's a small demo of the new algorithm which let's you try to break it. It also shows the triangulation in a nice way

https://aviac.dev/is-geo-boolops-still-broken/

VoiDD and the forgejo CLI folks

I'm very happy to announce the small organization VoiDD I'm a part of. Earlier this year noth contacted me and picked up some work on the codeberg/forgejo CLI tool I originally authored. Sometime last year I put it into an organization (VoiDD) to not own it single handedly. His enthusiasm sparked my joy to work on it again and I also invited tranzystorekk who has been working with me on the predecessor version of the tool. We renamed the tool to fjo, which is supposed to be the equivalent to what gh is for g*thub. While working on it I explored the idea of automatically checking whether the forgejo api had changed via tests and also thought about auto generating API types for forgejo in rust via a spec which floats around on the official forgejo page . Funnily a week after that tranzystorekk noted that there's already somebody else who's doing that exact same thing. This is how Cyborus joined the crew. I'm looking forward on creating cool tooling with all of you and I'm very thankful that we all found together and have such enjoyable discussion.

Bevy primitives gizmo rendering

Another long time PR that I've almost finished is the bevy PR that is concerned with enabling the user to render all the new math primitives with gizmos. Unfortunately I got kind of stuck with lifetime issues after the refactor following the latest review suggestion there.

Here's a link to it: https://github.com/bevyengine/bevy/pull/11072

I'm not really sure how to proceed there. Let's just ask for help.

Working on a secret bevy drawer app

I can't reveal anything yet but currently I'm working on a drawing app in bevy, very much inspired by the very cool posts from Freya Holmér.

So far it has been rather easy to implement the basics in bevy, that is:

  • Mostly camera movement relative to a working plane (currently just the XY plane)
  • The beginning of an implementation of half edge graphs directly in the bevy ECS.

To expand my general graph knowledge a bit I'm also reading some introductory math paper booky thing. That has been pretty enjoyable as well, but yeah every math book starts out easy until later where you need a lot of brain power to make any meaningful progress.

I'll reveal parts of it pretty soon.