RSSAmplifier

Blog

Holy on Dev

Blog about effective software development

blog.jakubholy.netRSS feed ↗474 posts

Latest posts

Consciousness work: what, why, how

There are matters more important than technology, and becoming more conscious of what is going on in your experience, and thus more free and powerful, is one of those.(This is a transcript of my 10 min talk on the topic. You may or may not prefer watching it instead of reading.)We are enslaved by anything we do not consciously see.We are freed by conscious perception.I love this quote because it…

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…

Holy Dev Newsletter December 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.Good bye, and thank you for the 🐟!This is going to be the last issue for a while. I have decided to focus on personal development and making the best out of the time we are given. I cannot spread myself too…

Holy Dev Newsletter November 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI’ve published my 15 min talk Mind-bending (technologies) from Ardoq conference about technologies that expand our ideas of what is possible and what computers can do for us. The good news?…

Holy Dev Newsletter October 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have taken a break from coding and spent instead time reading, meditating, and exercising 💪, so there is a lot of "gems" this month. Though some coding, was there - I have helped Tony…

Holy Dev Newsletter September 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have been to Heart of Clojure in Belgium, which was a wonderful experience. And I am not saying that only thanks to the home-made waffles. And the pralines. A cozy city, good food, very nice…

Holy Dev Newsletter August 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningNot much is happening, since August has been a vacation month. When there was time, I worked on wrapping up Wolframite and its documentation.

Holy Dev Newsletter July 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningWe are wrapping up our Clojurist Together sponsorship of Wolframite, the Clojure ↔ Wolfram bridge for scientific computing. We have fixed everything required for v1, added some ergonomics…

Holy Dev Newsletter June 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningThis month has been under the start of Wolframite, as we are trying to make good on our promises to Clojurists Together. We have focused on UX and bugs and stabilized the API. There are no more…

Holy Dev Newsletter April and May 2024

Welcome to the much delayed Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningLife happened so I wasn’t able to publish the April & May issues until today. I has been tough time, but I have learned to enjoy all the small pleasures of everyday life.I had to…

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?

Holy Dev Newsletter March 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have spent all my free time with Rama, which resulted in the posts Rama: How to achieve a transactional update across partitions and Hands on Rama, day 3: Foreign keys and data integrity,…

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…

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.

Holy Dev Newsletter February 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI keep a dialog with Thomas about Wolframite. We haven’t done much lately, but have planned the way towards v1. I have been primarily busy with Rama, finishing reading the docs and doing…

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…

Holy Dev Newsletter January 2024

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningGood news, everyone! Me and Thomas have got Clojurists Together funding for Wolframite in Q2/2024. The primary goal is to stabilize the API and release it, and make great docs. We are even in…

Holy Dev Newsletter December 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. (Also available online.) I am always eager to read your comments and ideas so do not hesitate to press the reply button!New blog postsI have published three blog posts, about Postgres and Rama:PostgreSQL & JDBC: How to select rows matching pairs of values, which solves…

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…

Hands on Rama, day 1: Setup, idempotent create & update

This is a part of a series documenting my experience applying the Rama programming platform to reimplement a part of the SaaS Ardoq, as a learning exercise. In day 1, I get set up and implement idempotent create and update of Components, while struggling with a few issues and lack of knowledge.IntroductionI want to learn the amazing programming platform Rama by applying it to a problem I know…

Exploring Rama, the platform for writing backends 100x more efficiently

In 8/2023, RedPlanetLabs has unveiled Rama, their integrated platform for writing and operating robust, distributed, and scalable backends 100x more efficiently. With it comes a new paradigm - dataflow oriented programming. So what is it all about?In this post I aim to give you a rough idea of what Rama is, what it offers, and why you absolutely should be interested in it.

PostgreSQL & JDBC: How to select rows matching pairs of values

Given a sequence of pairs of (id, version) in code, how do you efficiently select all records in your DB that match? You can construct a long string with SELECT …​ WHERE (id = 'a' AND version = 1) OR (id = 'b' AND version = 20) OR …​ but that’s not very efficient. If you only had a single value then, in PostgreSQL, you could use id=ANY(?) and pass in a char array. But what if you have multiple…

Holy Dev Newsletter Nov 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningExciting times! The gods of time have finally allowed me and Thomas Clark to get in sync and start reviving Wolframite, a bridge between Clojure and the awesome Wolfram Language and its…

The Four Heads of Complexity

Kent Beck has recently written about the four distinct aspects of complexity: states, interdependencies, uncertainty, and irreversibility. To tame complexity, you need to cut off one of these heads, and keep the others under control. What are they?If there is too many states and their combinations in the system, it becomes hard to understand.

Holy Dev Newsletter Oct 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningThis has been a month of HTML and CSS tinkering. I have fixed my online Clojure & Fulcro editor to properly support dark mode, fixed headings to show the self-link icon only on hover, and added…

Holy Dev Newsletter Sep 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningAs is often the case, the month didn’t go as planned. But it was very productive, especially for Fulcro (see below). I planned to dig more into Rama, alas…​ .For my tiny ERP, I have put in…

Include interactive Clojure/script code snippets in a web page with SCI & friends

I have long dreamt about having interactive code snippets of Fulcro in my teaching materials. Showing people code they could modify and see it render right next to it. Fulcro is a ClojureScript library, but it uses some heavy macros - and those typically require JVM Clojure. Well, not anymore. I was able to rewrite them into Borkdude’s Small Clojure Interpreter (SCI) dialect of Clojure. I.e. I can…

Accessing Google API with OAuth2 and a service account from Clojure

How to turn a service account’s service.json into an access token you can actually use to call Google APIs, when you don’t want to use Google’s SDK? With Buddy’s JWT it is pretty simple, and Tim Pratley’s HappyGAPI will show us how to do it. (I believe that the same approach would work with other OAuth providers, just with changes to some of the values.)

Holy Dev Newsletter Aug 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningRama, introThe biggest news of August is of course Nathan Marz’s Red Planet Labs coming out of stealth mode and announcing their 100x productivity backend building platform, Rama. More on that…

Holy Dev Newsletter July 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have written two blog posts. The first one is my highlights from the excellent book Escaping the Build Trap. Taster: "It doesn’t matter how good you are at making software, if you are…

When not to use Fulcro?

Fulcro is great for writing non-trivial, full-stack business SPA web applications, which display and modify data from a general data store. But it can’t possibly be perfect for every kind of web app. So when is it less then a perfect fit? Possibly still usable, but not as beneficial?

Book highlights: Escaping the Build Trap: How Effective Product Management Creates Real Value

It doesn’t matter how good you are at making software, if you are building the wrong thing. Melissa Perri’s Escaping the Build Trap is an excellent book about fostering culture focused on customer’s problems and producing value. A way too common pitfall is focusing on building features, based on vague, unverified ideas of what customers need or want. (This is the build trap, a.k.a. feature factory…

Holy Dev Newsletter June 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningHow is it July already? Where is all the time disappearing? This has been a surprising short month, despite its 30 days. On the bright side, I managed to finish my small Fulcro and Asami ERP.…

Holy Dev Newsletter May 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI am still finishing the tiny Fulcro ERP. This led to implementing support for "cascading delete" so that when a reference from an owner to an owned entity - e.g. from an Order to an OrderLine…

Holy Dev Newsletter April 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningApril has been an exciting month, as I have visited the ultimite world Clojure conference, namely Conj in the US. There have been some excellent talks, some good ones, and some disappointing…

Holy Dev Newsletter March 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningTime is flying! This has been an intense period at work, which occupied most of my time, together with a little help I provided to two clients and coding the Fulcro ERP. When you maintain…

Get insight into Pathom 3 in Fulcro with Pathom Viz

Fulcro has great dev tooling in Fulcro Inspect, however the part for exploring Pathom resolvers and attributes - its Index Explorer - is not compatible with Pathom 3. Here we learn what to do about it.

Holy Dev Newsletter February 2023

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI’am been busy working on the small Fulcro RAD ERP system for a friend. I have leveraged the work to publish a couple of live coding videos:Fulcro live coding: Delete mutation to list of…

Holy Dev Newsletter January 2023 & December 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe. This time it is a double issue because I obviously forgot to publish in December 😅.What I am thinking aboutI have long felt that software development is wrong. It takes too much effort to build and maintain…

First craft a language then build your software

A language suit for purpose enables us to express our thoughts clearly and concisely. In programming, this language consists of our actual programming language, the libraries we use, and the abstractions we build. I believe that most of the incidental complexity in code stems from an unsuitable language. A misfit language forces you to speak in a lengthy and roundabout way, never quite getting at…

My year 2022 in review

2022 has been a busy year both geopolitically ❤️🇺🇦 and locally. I have done a ton of Fulcro, played with Rust, got into managing projects and people.This is my first whole year in Ardoq and I am still loving it. I came to fullfil my dream of being full-time Clojure developer and (aside of that, because I still love Clojure!) I am staying for the friendly, open "big family" culture and awesome…

Fulcro Lesson: Detached Root Component (Form)

I am working on a Fulcro RAD application and want to display a RAD Form in a popup, to create a new customer for an order I am making. Normally Fulcro components are "composed all the way up to the root," including their query in the parent’s and getting their props from the parent. But that does not make sense here - I want a detached form I can pop up, fill, close, and go back to editing the…

Clojure is in fact a trinity - of language, interactive development, and structural editing

You can never really learn Clojure if you only focus on the language. Why? Because Clojure is in fact a synergetic combination of three things: the language itself, a way of working centered on interactive development, and structural editing support in editors for manipulating the code safely and efficiently. You cannot get the full benefits of Clojure unless you embrace all three.

Holy Dev Newsletter November 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI have helped recently on a large JavaScript and React frontend and have been shocked by its complexity. So I am trying to understand how to make frontends simple (which is not easy :)). It…

Holy Dev Newsletter October 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe. Sorry for the delay in publishing this edition, I was having too much fun with Rust.What is happeningNot much. I have experimented a little more with img-mg and found out that showing previews of many photos…

PostgreSQL: From JSON to table and back

I have a jsonb column in Postgres and I would like to update parts of it based on some other parts of the value. In Clojure I would have used update, which does new-value = f(old-value). How can I achieve something similar - i.e. deriving the new value from the old one - in Postgres? It turns out I can, with the help of a temporary table and jsonb_to_recordset that can turn a jsonb value into a…

Signing git commits with a ssh key using 1Password

The Sign your Git commits with 1Password post is really useful but it does not tell you how to verify that signing works, how to troubleshoot it, or how to make it possible to verify the signatures locally. I will explain that here. The short story is that you need to set up gpg.ssh.allowedSignersFile and add your key there to be able to use git log --show-signature.First of all, the setup as…

Holy Dev Newsletter September 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningFulcro: I have contributed a tiny change to Fulcro that will stop begginners from scratching their heads and wondering where did their data disappear when they return a lazy list from a Pathom…

Holy Dev Newsletter August 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningI spent most of August with my family and off computer, which was awesome. Obviously it made me eager to get back to coding so when I was asked to organize our summer pictures, I did what every…

Holy Dev Newsletter July 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.What is happeningThanks to a client I have explored how to integrate Fulcro components with vanilla JS higher-order components that render the target Fulcro component (possibly requiring to be passed a class,…