My digital tools and routines (2024)

My computer is my wizard’s staff, the thing that allows me to do my magic. What is my set up, what tools do I use for daily productivity, and how do I keep it safe from a disaster?


Continue reading →

Hands on Rama, day 3: Foreign keys and data integrity, macros, queries

The adventure with Rama continues! In the previous installment, I have created a simple C(R)UD for "components". Today, we will spice it up and add a foreign key and data integrity maintenance. Namely, a component can have a parent, which can also have a parent, etc.

I learn about transactional updates, about writing query topologies, and about code reuse with Rama segmacros. As usually, I excel at running into problems we can all learn from 😅.


Continue reading →

Rama: How to achieve a transactional update across partitions

While implementing my pet project on the mind-bending Rama platform, I ran into the classical need for an atomic update of a set of states, possibly at different partitions / machines. Let’s see what are our options for implementing that.


Continue reading →

Hands on Rama, day 2: Rewrite CAS, finish basic C(R)UD

My adventures with Rama continue from day 1. In the second day, I rewrote the compare-and-set logic to atomically succeed only if all field edits were ok (instead of on per-field basis), and I finished my basic, idempotent C(R)UD, with full test coverage. I have re-learned that no special forms may be used in dataflow code. Instead, I may write top-level functions or create anonymous rama fns via <<ramafn. I have also been reminded that code called from dataflow must not throw exceptions.

I actually took a long break between my first and second day of coding, because the first one taught me that I really needed to understand Rama in much more detail. So I have read essentially the whole Java-focused docs, as well as Clojure ns docstrings, especially those for paths. Since I am me, I forgot a lot and will need to re-read it, but anyway writing Rama is now much simpler.

Overall, it was pretty smooth sailing, even though I had some rough spots, as you can read below.


Continue reading →

My year 2023 in review

This has been a good year: I have been to my first (and likely last) Conj, where I met a couple of my Clojure heroes and old and new friends. I have finally held my "Why Fulcro, and how to learn it efficiently" talk at London Clojurians. After some 9 months, I have finished and fully "productionalized" my tiny ERP, powered by Fulcro RAD and (nowadays) Datomic. RedPlanetLabs have released its "100x productivity backend programming platform," and I am exploring it. Better late than never, I have started bringing the mind-bending Wolfram to Clojurians via Wolframite.


Continue reading →

Copyright © 2024 Jakub Holý
Powered by Cryogen
Theme by KingMob