Thanks! If you wanna do more, i wrote a bit about it on x/twitter, recently 3d printed an object to actually test such string art. if you have specific questions, happy to answer ofc!
https://x.com/mknol/status/1993708617586077928
Hey Im Mark and I realized I spend lot of lots of time searching for guitar theory online and I used my programming powers to create a interactive document with all notes layed out to explore and learn the fretboard entirely.
You can easily switch scales/chords/keys for guitar, bass, ukelele, mandolin and even banjos. The document will adapt all of its content to any of these selections you make.
Haxe is just great. The language, tooling and even docs has improved much over time, its joy to work with.
I've been using Haxe professionally to create html5 games for almost 6 years now. First started as hybrid solution to have both flash and canvas, nowadays fully webGL powered games with small/clean ES6 output.
I've been using Haxe for many applications; cli tools, generative art, websites, games, backends, tools etc.
Webdevs; There is a full-Haxe react alternative I've been using to create a website, which is called coconut.ui. Since its build with macros under the hood, it can have multiple outputs, which means you can output just its own renderer, but also react (+native), but you can use it to build reactive applications in other framework.
If you use lix (npm/yarn based) as dependency manager, you can require Haxe in CI, which also makes switching versions easily.
I am using Haxe, which is a complete different ecosystem, which compiles to JS. It has a fast optimizing compiler, a strict-typed language. Has features like meta programming /syntax-transformation (macros), conditional compilation, inlined calls etc. These are great tools to create high performance apps. You can find all the features on its website. It has a formatting tools and a linter, but has build-in deadcode elemination and a static analyzer so it only includes everything you use (so no need to strip it off afterwards as seen in some JS tools). Also could be a good candidate for WASM, since it compiles to C++.
One thing that is great about Haxe is that is also compiles to other languages; you can reuse same code for different compiler targets. I mean, why does Rome only target JavaScript? For Haxe that's just one option.