Week 10

Week 10

Saturday, July 20th

Logs: logs

DAG Zettelkasten / generates database code / more will come later

Tasks: dagzet-rust

It was pretty much an entire day spent on my dagzet rust port. I got loop checking to work in the morning, and the some initial SQLlite generation code made later.

Most of the time I think was spent trying to be clever with Rust's type system. I wanted there to be a way to use structs as an intermediate representation for a row of a particular table. You send this row struct as an argument into a method on a table struct, and you'd have the type checker ensure that only that particular kind of row works with that particular kind of table. It was a top-down idea, rather than a bottoms-up one in the sense that I knew what I wanted the programming interface to feel like, and it was a matter of wrangling Rust to do it for me. The solution ended up using a combination of traits, generics, and things called "phantom types" and "phantom data". See: <<rust/phantom_types>>

Sunday, July 21st

Logs: logs

Tasks: dagzet-rust

I really only worked in the morning yesterday. Managed to scope out the bare minimum of what needs to be done in order for my dagzet rust port to work with my existing RC knowledge graph. It is, of course, more work than I expected

Monday, July 22nd

Logs: logs

Tasks: demo-trio-voice-scheduler, dagzet-rust

Pretty much most of my day was spent building up a new voice scheduling system for the Trio demo demo-trio. The idea was to build a system that made it easy to simulate interactions in a test suite to ensure that behavior in the system was working correctly.

Dan showed me Stately <<webdev/stately_docs>>, because I mentioned my interested in building a state machine representing this system.

Dagzet in Rust is chugging along. I didn't do much yesterday, but I did implement the rest of the File Range command. I still need to generate the table for it (this should be a small task).

Tuesday, July 23rd

Logs: logs

Tasks: dagzet-rust, demo-trio-voice-scheduler, demo-trio.

Yesterday I achieved some good milestones for both dagzet and Trio.

The big job I've been doing with Trio is to do a complete rewrite of the voice scheduling system, complete with a set of tests to ensure the behavior is working correctly.

The initial work has been completed and integrated into the actual Trio system. It mostly works. There is one timing bug I don't quite understand: The lower voice sometimes waits one beat too long before turning on. I also fixed some code related to my event scheduler.

I am nearly done implementing the initial command set for my Rust port of Dagzet. I forgot about the "cx" command though. As a test, I tried to use it to generate my knowledge graph, and ran into some issues. I'm going to need more descriptive errors in the command line before I can figure out what is going on.

Wednesday, July 24th

Logs: logs

Tasks: dagzet-rust

My initial port of dagzet to rust is now complete. It can now serve as a drop-in replacement for the original implementation in Lua.

21 hours, 47 minutes, 32 seconds of logged time.

Thursday, July 25th

Logs: logs

Tasks poke-laughter-chitter, demo-trio-chords, read-elem-compsys.

I spent a chunk of my morning trying to make it look like the critter in "Poke" was enjoying the pokes. I sketched out a few ideas, and tried to go with one that would be easiest to draw in p5.

I showed Poke to someone new today. Instant repulsion. I enjoyed the reaction, but it's making me realize that designing this thing to be cute and cuddly is going to take a lot of work. I still need to tweak the sound, so maybe there's a chance for improvement.

I spent most of my afternoon working out a potential chord selection algorithm. I first define a set of valid state transitions between chords, then I have a set of heuristics that it goes through to choose a chord based on the current lead note. I attempted to build the heuristics in such a way that there would be variety in the chords being chosen.

Some initial code scaffolding has been written. Like before, I am writing tests as I go, working out each heuristic separately.

I'm still reading "The Elements of Computer Systems", usually in the evenings for about 45 minutes to an hour. I just arrived at chapter 5. I am not doing any of the exercises, which is why I've been able to arrive there so quickly.

Friday, July 26th

Logs: logs

Tasks: demo-trio-chords.

Implemented some initial parts of my chord selection algorithm. Specifically, the note transition selection.