Blog posts index page 5

What I allow to shape me

It is impossible for any human to take in all the information available to us. As new technologies emerge, both the amount and pace at which information hits us keep increasing. With an abundance of information, how do we choose which we allow our attention to absorb and which to ignore?

Read more...

Neo4clj - an introduction

It started with a business idea a few years ago… a business idea that would require a graph database, specifically Neo4j.

We did explore the existing libraries at the time, but decided to “roll our own” for reasons that now eludes me… and work began on Neo4clj.

Read more...

Becoming friends with Clojure protocols

Midjourney prompt: protocol.

I’ve been programming Clojure for several years, and yet I’ve managed to avoid protocols during all that time (I’ve also avoided macros, but that is another story). I found myself always having a colleague do the “dirty work” or some sad excuse as of why it wasn’t necessary right now. No more… this week I got my hands dirty.

Read more...

Stop micromanaging your code

This rant is about a bad habit some developers pick up and seem to have a hard time ditching again… even after gaining lots of experience.

I guess it is to be expected. After having been burned one too many times by missing error handling, in the software they work on, they become overprotective. But it often overcomplicates the code and leaves room (extra lines of code) to place “a fix”, where “the fix” does not belong. Of course, there are plenty of gray areas, murky waters and personal opinions of … exactly where to slice the cake.

Read more...

Heroicons from ClojureScript

Update 2022-02-20: Requiring single icons using :refer causes ALL Hero icons to be included in builds (even optimized). Instead, use :as (multiple times). Examples below have been updated.

In my opinion, Clojure and ClojureScript is lacking in the documentation department, especially when it comes to integrations with things outside the Clojure ecosystem.

Read more...

Realtime DB synchronization to frontend

Midjourney prompt: A database silo on the left and with minimalist simple modern UI frontend dashboard with sparse data points on the right. Between them flows sparks of data.

I’ve set out to solve: How to synchronize “low volume” parts of a database to a frontend in real-time, exclusively for reads. In this scenario, “low volume” means few entries with a low update frequency. Let’s say we’re talking about less than a thousand entries affected by fewer than ten updates every minute across all entries.

Read more...

Why do we allow poor software quality?

Midjourney prompt: Top down view of a wooden table top with one half clean and with neatly stacked papers while the other half is a mess. The mess consist of pensils, curled paper, coffee stains and trash. Colorful oil painting. Midjourney edit prompt several: 1. Clean wooden table top with neatly stacked paper and a single pencil. 2. Messy wooden table top with trash like curled paper, stains half eaten fruit and a broken pencil. 3. Colorful wooly yarn on table. Poor software quality stems from inexperience, time constraints, and software decay, but these can be countered by prioritizing quality. Not prioritizing quality leads to inefficiencies like slow delivery and higher costs. Investing in maintainability ensures long-term success. Read more...