On Performance, GCs and Rust
Consider this claim: Rust programs have better performance than Java/Go/.NET programs. Do you agree with it?
Feed of blog articles, published at alexn.org/blog/
Consider this claim: Rust programs have better performance than Java/Go/.NET programs. Do you agree with it?
If copyrighted works can be whitewashed / reimplemented via AI, then copyright is dead. And now we have a case in public view, the reimplementation of chardet, relicensed from LGPL to MIT, causing upheaval.
You may have read the “Boring” Tech Stack in 2015, a view with which I’ve wholeheartedly agreed. And if you didn’t agree with this view, the corporation you’re working for surely agreed. It’s why companies like Google have had a list of “approved” languages, for example. But is this view relevant in 2026? I think not.
Simple snippet for using Tapir, with business logic driven by Cats-Effect, using Akka/Pekko HTTP as a backend.
Alternative to Scala’s Promise and Cats-Effect’s Deferred, exposing a hybrid API, useful for interoperability between imperative libraries (e.g., Akka/Pekko) and Cats-Effect.
Reflections on finding happiness through gratitude, purpose, and disengaging from what’s unimportant.
The TLDR: Eat your own dogfood by practicing DevOps on your own infrastructure, change mentality to one oriented towards automation, and grow your hard engineering skills, such as learning to do programming, because it’s in the job description.
In the age of “AI” Agents generating the code, is your programming language choice still relevant? Or will we just converge on using the top 5 programming languages, because that’s what the “AI” has been trained on? You can also ask the same question for any other piece of tech from your stack.
In Java, try-catch-finally can ignore returns, mask exceptions, and breaks the interruption protocol.
Which language leans more towards functional programming? In this binary choice, people have perceived F# to be that language, due to its ML roots, but I have a different perspective…
How to parse HOCON in Scala 3? How to use Circe for HOCON? How to work with multiple JSON codecs per data structure?
I’ve used spicy auto-complete, as well as agents running in my IDE, in my CLI, or on GitHub’s server-side. I’ve been experimenting enough with LLM/AI-driven programming to have an opinion on it. And it kind of sucks.
Scala 3 came with “significant indentation”. And I still dislike it, despite trying hard, so I’m switching back to braces.
Scala has a neat new feature, resembling TypeScript’s “conditional types”, but more powerful.
Or how I'm using GitHub's Copilot in Agent mode for yak shaving, evolving my Jekyll-powered website for rendering mathematical formulas by SVG images, instead of heavy JavaScript.
Simplifying radicals is strangely satisfying.
My son started high-school, so I’m helping him with mathematics. It’s been a long time, and I have to re-learn. But it’s fun, and I’m hoping to start a series of articles.
We are not machines, or automatons. We were fooled, but we can fight back. Don’t let algorithms control your thoughts and actions.
I’ve delivered (sometime this year) this presentation at a local meetup (ING Hubs Romania). The target was mainstream developers, with the intent to give them a taste of FP and working with I/O in Scala.
Scala does not move in the direction of more monadic IO, but rather in the direction of “direct style”, preferring continuations to monads, but without providing support for continuations out of the box.
This is a script that I use for backing up my OneDrive to a Nextcloud instance.
What’s the difference between Option[A] and A | Null? What about between Either[A, B] and A | B?
In my previous post, I mentioned that I now use Firefox as my main browser and you should too. Firefox’s strength is its extensions, with many available on Android devices as well. Here’s a list of my favorites.
I grew up with the Internet, since before people had Internet connections at home or in their pocket. The browser, being the window to the open web, holds a special place in my heart. In this article I’m suggesting the use of Firefox in 2025, for both technical and political reasons, as it’s still the “user agent” that it set out to be.
I like having a database of links I encounter on the web, like a searchable database, complete with archive links as well. I found a solution.
I’m self-hosting stuff using Docker on my own server. One problem that comes up for a personal server is to keep it up to date, as old software has security issues. And we don’t want to self-host servers that can become vulnerable due to neglect.
Now that you’ve seen the dangers of social media, the question is, what are you going to do about it?
This sample shows an HTTP server and an HTTP client that can cleanly cancel requests. It’s using Tapir and Sttp, with Netty and AsyncHttpClient backends, all powered by Cats-Effect.
“Shrink-wrapped”, “off-the-shelf” apps, or what the young have come to know as premium apps from the app store, are destined to languish, to become expensive subscriptions, or to be sold to shady companies that will sell your data or make your computer part of a botnet. Proprietary apps are destined to either disappear, most of them taking your data with them, or to rip you off.
Optimising costs and my workflow is a personal obsession of mine. I've been a 1Password user for years, and I keep trying Bitwarden. If you want to pick between the two, here are the differences between them at the time of writing.
When generating random numbers for certain use-cases, such as when generating keys / IDs, it’s recommended for the random function to be “cryptographically strong”. Otherwise, attackers could predict random values, enabling serious security vulnerabilities.
Ads are now, unfortunately, a vehicle for malware, scams, or services that are deceptive and barely legal. But, should we block ads?
As software developers, we invest a lot in our tools. Time, energy, and feelings. We recommend tools to others; we build on top; we belong to a community; we contribute; hence we're eventually becoming stakeholders. And there's no other tool more clamored or risky in our belt than the programming language. Well, gather around, kids, let me tell you two stories from my past with the software…
Today I was reminded how awesome Scala is for scripting, via Scala CLI. And it goes beyond having “batteries included”.
A new year is upon us, and it’s customary to make resolutions. The problem with new year resolutions is that we tend to forget them in about a week. So, how to make resolutions that stick?
This is an update to my december adventure, in which I took it upon myself to learn the Rust programming langauge.
This December I’m off to a great personal adventure in programming. Everyone can have their own fun December Adventure. You pick something you want to do, or maybe learn, and you do a little of it everyday, as long as it involves some coding.
Scala’s coding style advised to use 2 spaces of indentation, but that was before Scala 3’s optional braces, which introduces significant indentation. It’s time for an upgrade of the coding style.
What’s the difference?
I’m a geek, and a software developer. I want to be close to my peers, wherever they meet online. If this means reactivating former social media accounts, so be it. Therefore, I’m implementing POSSE, again 😕
In Java and other JVM languages, “volatile” reads and writes are part of the concurrency toolbox. But adding volatile on variables can be a mistake. This is a poorly understood concept. Let’s gain a better understanding.
Here’s a fairly straightforward Scala 3 sample, using significant indentation. Can you spot the compilation error?
In Scala, how do we model enumerations of values? What are the possible issues? How does Scala compare with Java? What are the changes in Scala 3?
The database schema should be described as code, in your repository. And you should be able to semi-automatically update your database schema on new deployments. Now in Kotlin, with Gradle and Flyway.
Kotlin Coroutines are usually integrated in Java code via Java’s CompletableFuture, but a tighter integration might be possible with Cats-Effect.
We are using a combination of Akka and Cats-Effect (ver. 3) for building payment processors. This post describes some solutions we’ve discovered.
I self-host my blog, other websites, Matomo, Mastodon, etc. I love self-hosting. But I need monitoring, to be alerted when things go wrong, as my setup is getting more and more complex. So, I recently asked for help online, being in need of a monitoring system for my VPS, as I need simple, common-sense health alerts. I got a recommendation for M/Monit, which seems to work well. This article shows…
Friday the 13th just passed 😳 and what a great day it was to finally leave Twitter. It’s been a fun ride, I found my programming community on it, I’ve learned a lot, but those days are over 😞
Cloud hosting services like Linode or DigitalOcean offer backup services for your VPS. Save your money, you don’t need it. Here’s how to backup your data safely, and with no extra costs…
Snippet for when you’re using Circe and want to define custom Jackson serializers/deserializers from Circe’s codec definitions.