RSSAmplifier

Blog

Alexandru Nedelcu - Blog

Feed of blog articles, published at alexn.org/blog/

alexn.orgRSS feed ↗157 posts

Latest posts

On Performance, GCs and Rust

Consider this claim: Rust programs have better performance than Java/Go/.NET programs. Do you agree with it?

Copyright is Dead

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.

Boring Tech May Become Irrelevant Tech

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.

Tapir Server with Cats-Effect and Pekko HTTP (snippet)

Simple snippet for using Tapir, with business logic driven by Cats-Effect, using Akka/Pekko HTTP as a backend.

Hybrid IO-driven Promise (Scala snippet)

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.

New Year, Old Me

Reflections on finding happiness through gratitude, purpose, and disengaging from what’s unimportant.

How To Become a DevOps Engineer

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.

Programming Languages in the Age of AI Agents

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.

Try-catch-finally in Java is Cursed

In Java, try-catch-finally can ignore returns, mask exceptions, and breaks the interruption protocol.

Scala vs F#

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…

Scala 3 / HOCON Parsing

How to parse HOCON in Scala 3? How to use Circe for HOCON? How to work with multiple JSON codecs per data structure?

'AI' Sucks the Joy Out of Programming

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 / No Indent

Scala 3 came with “significant indentation”. And I still dislike it, despite trying hard, so I’m switching back to braces.

Scala 3 / Match Types

Scala has a neat new feature, resembling TypeScript’s “conditional types”, but more powerful.

Update on Math Formulas via Copilot

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.

Math Pill #2: Square Roots

Simplifying radicals is strangely satisfying.

Math Pill #1: Sums

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.

Outsourced Voices, Outsourced Minds

We are not machines, or automatons. We were fooled, but we can fight back. Don’t let algorithms control your thoughts and actions.

Effects and Concurrency in Functional Programming

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's Gamble with Direct Style

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.

Backup Script for My Cloud Storage

This is a script that I use for backing up my OneDrive to a Nextcloud instance.

Tagged vs Untagged Unions (in Scala)

What’s the difference between Option[A] and A | Null? What about between Either[A, B] and A | B?

My Favorite Firefox Extensions

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.

Use Firefox in 2025

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.

Self-hosted Bookmarks Manager

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.

Auto-updating Docker containers

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.

Join the Open Web

Now that you’ve seen the dangers of social media, the question is, what are you going to do about it?

Cancellable HTTP requests via Scala's Tapir

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.

Trusting Open-Source

“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.

1Password vs. Bitwarden

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.

Cryptographically Strong Random on the JVM

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.

On Advertising and Tracking

Ads are now, unfortunately, a vehicle for malware, scams, or services that are deceptive and barely legal. But, should we block ads?

Scala's Future

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…

Update NextDNS with a Scala CLI script

Today I was reminded how awesome Scala is for scripting, via Scala CLI. And it goes beyond having “batteries included”.

New Year Resolutions

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?

December Adventure update, thoughts on Rust

This is an update to my december adventure, in which I took it upon myself to learn the Rust programming langauge.

December Adventure: Learning Rust

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.

In Scala 3, use 4 Spaces for Indentation

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.

OOP classes vs Higher-order Functions (HOFs)

What’s the difference?

Post Once, Syndicate Everywhere (POSSE)

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 😕

Java Volatiles

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.

Scala 3 Significant Indentation Woes: Sample

Here’s a fairly straightforward Scala 3 sample, using significant indentation. Can you spot the compilation error?

Scala 3 Enums

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?

Managing Database Migrations in Kotlin

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 to Cats-Effect

Kotlin Coroutines are usually integrated in Java code via Java’s CompletableFuture, but a tighter integration might be possible with Cats-Effect.

Integrating Akka with Cats-Effect 3

We are using a combination of Akka and Cats-Effect (ver. 3) for building payment processors. This post describes some solutions we’ve discovered.

Server Monitoring with Monit

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…

#DeleteTwitter

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 😞

Personal Server Backups

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…

Custom Jackson JSON serializer/deserializer from Circe

Snippet for when you’re using Circe and want to define custom Jackson serializers/deserializers from Circe’s codec definitions.