
programming
The state management library front-ends are looking for is a database
State is a cross-cutting concern. Weak equivalence hinders re-rendering. Distance between code and data breeds complexity. State transitions need linear traces.
programming
State is a cross-cutting concern. Weak equivalence hinders re-rendering. Distance between code and data breeds complexity. State transitions need linear traces.
lab notes
This past week was spent researching and reminding myself of the core problems of building interactive apps and addressing state management problems. * React I Love You, but You're Bringing Me Down [https://marmelab.com/blog/2022/09/20/react-i-love-you.html] * Get in Zoomer, We're saving React
lab notes
The persistent data structure in Datomic is used as a live index for querying. However, it's unique in that it saves itself to a storage-backed key/value store in segments–continuous pieces of data akin to the data in the leaf nodes of a trie. By fetching a
lab notes
Spent the week fixing issues with insertion, mostly with different edge cases. Was able to solve an issue with inserting at the beginning and the end of the trie. The edge case was that take_left and take_right should take into account when we take everything or take nothing.
lab notes
After the iteration over values was done, it was quick work to write tests for concatenation and make sure that it was working correctly. Then the time thereafter was some cleanup and moving stuff out to their own files. The work this week to implement take_right and take_left,
Essays
This is a review of all the resources I found and learned about persistent data structures in the course of looking for a solution for maintaining state. Complexity from maintaining state One of the hard things about programming is how to maintain and manage state [https://interjectedfuture.com/the-broken-half-of-interactive-programs/], especially
lab notes
This week was a little different. The implementation work was supposed to be fairly trivial, but in practice, it took a lot of time. The implementation was for an iterator that iterates over all the values in the RRBT in order. In theory, it's pretty trivial. The core
lab notes
Most of this week has been spent rewriting `append()`. This stemmed from mostly following the pseudocode from the L'Orange paper [https://hypirion.com/thesis.pdf] too closely. Excited about ChatGPT, I used it to convert the pseudocode to Rust code and tried to go from there. However, in
lab notes
Took a bit of a break, but have been back at it. The most involved part of implementing the relaxed radix balance trie is the concatenation. I had to consult three [https://hypirion.com/thesis.pdf] different [https://raw.githubusercontent.com/nicolasstucki/scala-rrb-vector/master/documents/Master%20Thesis%20-%20Nicolas%20Stucki%
lab notes
I'm usually not hung up about the programming language I use, but given Jamie's take [https://www.scattered-thoughts.net/writing/assorted-thoughts-on-zig-and-rust/], I did some deliberation about whether to use Zig or Rust. I ended up going with Rust, because I'm not a seasoned systems
lab notes
While moving forward through the implementation, it wasn't clear how the indexing worked in detail. How do you determine what segments were different between the live and storage-backed indices? By definition, aren't all segments in the live index novel? But more worryingly, what is the key
lab notes
A good part of the week was spent reading and watching talks on "The  simple essence of automatic differentiation". I got the gist the first go around but much of the details were opaque to me. Reading it this second time around and actually working through the examples