2022-05 Status Update
on 2022-06-01 in status-update
| alpine | sourcehut | midi |
alpine-conf is now accepting timezone as an arg, instead of a flag (from commit 3b793bb). This broke the edge build of alpine image of builds.sr.ht; which I fixed.
I was figuring out a way to show code metrics of one of my go modules. I proposed a feature to be added to builds.sr.ht in detail, which got rejected due to the complexity involved in its implementation and its narrow scope.
I tried packaging wlgreet for alpine linux. But it was failing at runtime with segfaults. It is written in rust and uses wayland-rs. I wasn’t familiar enough with it to be able to fix the issue. I published my work for others to pick up.
I worked on this project whole month. Exploring various designs that optimize for performance while still exposing a pleasant to work with public API. Since I want to dive deep into how the library works, I think posts explaining it are better suited as a separate series.
To give an overview, go-midi has:
- minimum possible memory allocations
- zero heap allocations on hot code paths
- every input typed and validated
- all serialized MIDI messages spec compliant
- no bounds checks
- most functions inlinable by the compiler
Support for MIDI 2.0 is planned but is not yet implemented.
I’ll also write a separate post about MIDI 2.0 and how I think it will change the future of digital music.
I came to know about FSCI from a fellow Free Software Hacker Sai Karthik. I was pleasantly surprised to see many people from India sharing similar values about software freedom. If you’re interested knowing more or sharing something interesting, do join us.
I started using swaylock and swaylockd to lock my laptop when I’m away. If you’re wondering why I wasn’t using a screen-lock all this time, you’re not alone.
A friend of mine, Chintan, brought his MIDI keyboard last week and we jammed using fluidsynth and pipewire.
I felt quite productive this month. I tinkered with several prototypes of go-midi; learned a lot about go’s garbage collection, escape analysis, bounds check elimination, code generation, and code inlining. Last month’s vacation has played a huge role in this increased productivity.
Until next post. Peace.
I welcome your feedback or constructive criticism to ~firstname.lastname@example.org. You can also visit the public archive.