Consciousness sabbatical for the forseeable future
Technology is fun, but there are far more important things in life. Such as understanding what life, self, and everything really is. It has been really quiet here this year, and it will continue to be that way because to progress I need to focus. I may come back or I may not. It doesn’t really matter either way :-).
If you don’t really know what consciousness is or why it should matter, I cannot recommend enough as a starting point the book Ending Unnecessary Suffering. And even more than the book, the corresponding workshop, which makes it far easier to actually experience the stuff (and, hopefully, a fundamental perspective shift), rather than just thinking about it. Thinking is pointless (it is, after all, what gets us in all this mess), getting insights in one’s own experience is what makes a difference. All the best, and thank you for all the fish*!
Continue reading →
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 →