Week 12

Week 12

Saturday, August 3rd

Logs: logs

Tasks: blob-coax, investigate-xmrsplayer, investigate-c2rust.

Started the day looking into c2rust. In theory, it installing it should have been as simple as "cargo install c2rust". But. I ran into some snags related to CMake and LLVM.

Why did I want to use c2rust? Right. Because I wanted to automatically port libxm to rust so I could play small music files in the browser for some of my sound toys. Good news, this was already done already! <<rust/crates/xmrsplayer>>. Bad news: it didn't sound all that great: very low amplitude, and lots of clicks. I'm willing to believe this was due to mistakes I made, but it's not like libxm was a perfect XM player library to begin with.

I also got sidetracked trying to compile Bun <<webdev/bun_js>> on my Alpine machine. It was mentioned by like 3 people over the past few days. Being a musl-based system, I couldn't use the pre-built glibc binaries. So I rolled up my sleeves and gave it a go at building from source. Funniliy enough, I also ran into CMake and LLVM problems here as well. I got pretty far, but had to stop when there was a build stop that required Bun in order to build Bun. I'll just use a chroot, thanks.

I changed Coax a little bit so that it goes after the closest pellets. Very effective. I also started playing it while listening to various kinds of music, a sort of spotting sessions. I really want a quirky Bossa Nova.

Sunday, August 4th

Logs: logs

Tasks: investigate-ft2play, blob-coax.

Today was spent looking into <<trackers/ft2play>>, a highly accurate player for files made in FastTracker 2 <<trackers/ft2_wiki>>, known as XM modules (using the extension .xm). My goal was to try to get a version of it working without the SDL dependency, so it could be used as simple WAV file renderer for XM files.

It was a very pleasant experience. 8bitbubsy designed this codebase for people like me who wanted to hack on it. Stripping the SDL dependency was a straightforward ordeal, and since I was only using it to make WAV files, I could remove a lot of code.

Not listed here, but late last night on a whim I looked into Schism Tracker <<trackers/schism>> again. For whatever reason, it just clicked. Things felt really good. It was able to build and run on all my nearby devices: my m1 mac, and my thinkpad running alpine linux and JACK. So now all of a sudden I really want to do investigate the world of Schism Tracker and Impulse Tracker module files (IT).

Monday, August 5th

Logs: logs

Tasks: itparser-rust

Was a very "sidequest" day.

Went for a walk to the park, played around with Schismtracker with RB. They showed me some sound design tricks.

I did start some brief work on this IT parser. I was going to just do it in C, but I reached for Rust instead. It's nice to have an expressive language for a change for this kind of thing.

Tuesday, August 6th

Logs: logs

Tasks: itparser-rust.

Low-energy day. Processed a lot of thoughts and feelings.

Spent the morning working on niceties. Helped PK with some ALSA troubleshooting after the audiohang. Got some note information to print in my IT parsing experiments.

Wednesday, August 7th

Logs: logs

Tasks: read-elem-compsys.

Not a whole lot of structure today. Did some reading. I read chapter 6 of "The Elements of Computer Systems". This seems to be a good enough stopping point. It's the last chapter that Teach Yourself CS recommends reading. Also, I feel diminishing returns without having actually done any of the exercises.

I also re-read Knuths interview in "Coders At Work", something I hadn't looked at in over a decade. Having done a significant amount of literate programming in systems like Org and CWEB, I felt like I could relate more to those conversations. Also having skimmed through more of TAOCP, I found those topics to resonate more. I guess Knuth was working on his combinatorial algorithms volume when this interview happened. I believe some of that is out now.

Nice conversations today.