Migrating this blog from Tailwind v3 to v4
Moved this blog from Tailwind v3 to v4. The big change is that configuration left tailwind.config.js and went into the CSS itself, using @theme.
Resi Dwi Thawasa
Quick notes and discoveries from my learning journey
Moved this blog from Tailwind v3 to v4. The big change is that configuration left tailwind.config.js and went into the CSS itself, using @theme.
On a charge endpoint, a retry or a double click can turn one payment into two. The fix is an idempotency key. The caller sends...
We had a server-to-server callback that came signed, and I needed to verify it in Go. The flow is short: parse the public key (usually...
We had a slow query that filtered on a column where almost every row held the same value, and only a small slice was the...
After upgrading to Go 1.21, I deleted a few tiny helper functions I had been carrying around for years.
Our error tracker was full of RecordNotFound exceptions for cases that were completely fine. A missing row was expected, not a real problem.
I assumed context.WithTimeout would cancel anything once the deadline passed. It does not. It only signals. Your code has to actually watch the context for...
In a side project I use the closure_tree gem for hierarchical data in Rails. Methods like #leaves and #hash_tree are handy, but once I added...
Under load we kept getting “bad connection” errors that came and went. The connection pool had a sane max open setting, so that was not...
Kafka only guarantees order within a single partition. Not across partitions, and definitely not across topics.
When a circuit breaker opens because a downstream is failing, you stop calling it for a while to let it recover. The question is what...
Quorum is the smallest number of nodes that have to agree before a decision counts. The formula is ceil(N/2):
Committed a bunch of work with the wrong author name, and some with a personal email I did not want public. Fixing the latest commit...
Evicted pods pile up and clutter kubectl get pods. They are done, they just sit there. Here is a one-liner to clean them up across...
In Go’s net/http, the server starts a new goroutine for each incoming request. So your handlers run concurrently by default, even if you never wrote...
A hot read endpoint was slow and I could not see why from the code. Watching the query log gave it away: one query to...
Needed to load a SQL dump into Postgres running under docker compose. The obvious pipe:
Spent way too long on a build that worked for me but broke for a teammate. Same repo, different output.