Skip to main content

VirtusLab's Articles

Artificial Intelligence|Apr 21, 2026

Shadow AI Is Already in Your Codebase

This is post #4 in The Agent-Ready SDLC series. In post #1 we laid out the Ferrari-in-a-Fiat-500 problem - the engine is great, the chassis isn't. In post #2 we covered the first bottleneck: context. In post #3 we covered the second: feedback loops. Now we're at the third piece - and it's the one nobody wants to talk about.

blue_wave
Backend Engineering|Apr 17, 2026

Bootstrap Your Backend Server Using Ktor, Koin, and Exposed

After seven years in Java, I joined a Kotlin project and got curious about the native ecosystem. To learn it, I built a small Trading Accountability App — a tool that logs trades, enforces trading rules, and flags violations when discipline slips — from scratch using only Kotlin-native libraries, and this article walks you through doing the same.

Image Alt
Scala|Apr 17, 2026

Comparing effect systems in Scala: The Problem and Future

Concurrency in Scala has come a long way from the humble beginnings of `scala.concurrent.Future`. What started as a minimal abstraction over callbacks that allowed easy sequencing of operations, thanks to the monadic composition has since evolved into a rich ecosystem of effect systems, each trying to solve real-world problems around type and resource safety, composability, and performance.

Image Alt
Scala|Apr 16, 2026

Comparing effect systems in Scala: Cats Effect and ZIO

The Cats library and the related Cats Effect were inspired by scalaz and scalaz-concurrent libraries (and, more broadly, by Haskell and its ecosystem). They represent the most widely adopted effect system in the Scala ecosystem. In this context, effects are values representing descriptions of computations that can be composed using typeclass-based abstractions like Functor, Monad, or Sync, as provided by Cats and Cats Effect. This approach promotes the use of pure functions and referential transparency - the principle that any expression can be replaced by its evaluated result without changing the program's behavior.

Image Alt
Scala|Apr 15, 2026

Comparing effect systems in Scala: Kyo, Gears, and Ox

Kyo is one of the younger kids on the block - at the time of writing of this blogpost it has only reached its first release candidate for version 1.0. It is the brainchild of Flavio Brasil, a tenured Scala open source author and contributor who, in the past, created Quill, an SQL library based on Scala’s metaprogramming facilities and contributed to Twitter’s Finagle stack. Kyo attempts to take the idea of fused effects introduced in the ZIO monad and generalise it to provide a complete algebraic effects runtime and solve the “monads do not compose” problem at the same time. In practice, Kyo is also a purely functional, monadic solution but it’s built for the future and uses a lot of new features of Scala 3 to aggressively avoid allocations and inline common operations.

Image Alt
Artificial Intelligence|Apr 15, 2026

Sandboxing LLM coding agents: part 1

LLM coding agents moved fast from cloud demos to tools running on developer workstations. They don't just suggest code anymore. They execute it. They start shells, install packages, edit repos, run tests, and sometimes open PRs. All with the same permissions you have. In the first part of the miniseries, Jakub Bocheński will look at Context, Motivation, and available sandboxing tools.

purple_waves
Scala|Apr 14, 2026

Safe Scala: an introduction

AI agents are powerful: they can execute many day-to-day tasks thanks to their understanding of the surrounding context. That's what sets them apart from ordinary automations. However, they can also go wrong in various ways. That's why giving an agent free access to your computer might not be the best idea. For many reasons: starting with agent incompetence, where a "photo cleanup" request ends up with all of your photos permanently removed, instead of neatly organized into folders. There are several options for restricting the actions an AI agent can perform. Safe Scala provides tools to achieve just that. Let's take a short overview of how Safe Scala works and what the alternatives are.

blue_wave
Artificial Intelligence|Apr 13, 2026

Your CI is an Oracle... that lies too

This is post #3 in The Agent-Ready SDLC series. In post #1 we laid out the Ferrari-in-a-Fiat-500 problem - the engine is great, the chassis isn't. In post #2 we covered the first bottleneck: context. Now we're at the second bottleneck - the one that sits between your agent and reality.

green_layers
Artificial Intelligence|Apr 13, 2026

Interview with Krzysztof Grajek, Principal Software Developer at SoftwareMill and the lead engineer behind TraceVault

As AI tools take over more and more of the actual coding work, a new question emerges: who's watching what they do? TraceVault is a tool designed to bring that control back. Krzysztof Grajek, Principal Software Developer at SoftwareMill and the lead engineer behind TraceVault, talks about why the rise of AI-generated code demands a completely new approach to trust, auditability, and documentation.

Grajek_talking
Artificial Intelligence|Apr 10, 2026

Cognitive Debt: The code nobody understands

AI-generated code creates cognitive debt as developers accept code they don't understand. Learn how this hidden risk threatens teams and how to fight back.

Image Alt
Artificial Intelligence|Apr 10, 2026

AI in the SDLC: Faster or Just Busier?

As AI accelerates code generation, many teams are discovering that speed gains often come with hidden costs in review, validation, and complexity. We sat down with Krzysztof Romanowski to unpack what’s really happening inside modern engineering organizations.

colourful_triangle
Business insights|Apr 9, 2026

Build or Delegate? The Hidden Cost of Developer Experience (DX)

As developer experience (DX) becomes a competitive advantage, many organizations are investing in internal platforms and tooling. However, building and maintaining DX capabilities in-house is costly and complex. This raises a key question: when should organizations manage developer productivity internally, and when is it more effective to engage external partners?

Image Alt