Skip to main content

VirtusLab's ArticlesRSS

Artificial Intelligence|Sep 3, 2025

GitHub All-Stars #2: Mem0 - Creating memory for stateless AI minds

As part of our GitHub All-Stars series, where we examine open-source gems, I stumbled upon a project that strikes at the heart of one of the most fundamental problems in modern AI. After analyzing deepagents and its system-level approach to reasoning, the natural next step was to examine how we solve the problem… of memory.

neurali_links
Scala|Aug 27, 2025

Distributing Test Execution with SBT: A Complete Guide to Parallel CI/CD

Test suites have grown in size and complexity. What used to be a quick validation step has become a bottleneck that can significantly impact development velocity. The solution is to distribute test execution across multiple machines, running different test groups in parallel.

mirage_code
Artificial Intelligence|Aug 27, 2025

GitHub All-Stars #1: deepagents - Architecture of Deep Reasoning for Agentic AI

I’ve always claimed there’s no better way to learn anything than by building something yourself… and the second-best way is reviewing someone else’s code. From now on, every Wednesday we’ll pick one trending repo from the previous week and give it some attention: a tutorial, an article, or a code review - learning directly from its authors.

blue_optical_fiber
Artificial Intelligence|Jul 14, 2025

Providing library documentation to AI coding assistants

If you are using AI coding assistants or agents, they will only be as helpful as their knowledge of the libraries you use. LLMs know a lot about the world from their training set, but that might not include a library's documentation at all or include an older version. Agents can browse the Internet looking for more recent information, but this might not be precise enough. For instance, the web might be littered with outdated examples, and the latest information might only be available in the official docs. Hence, if you are a library author, how do you prepare your documentation for consumption by coding agents?

colorfull library
Backend Engineering|May 7, 2025

Why Java on ARM is gaining momentum

Java has come a long way on ARM. Runtime improvements, smarter garbage collectors, and better vector performance now make it a solid fit. CI/CD pipelines work without extra effort. This guide walks through: - real-world benchmarks - examples from AWS and Google Cloud - gives hands-on advice for tooling, deployment, and compatibility If you're weighing cost, speed, or sustainability, this will help you judge whether a move to ARM makes sense—and how to pull it off cleanly.

Why_Java_on_ARM_Is_Gaining_Momentum_image
Scala|Jul 18, 2024

Scala to WebAssembly: How and Why

WebAssembly (Wasm) is a binary instruction format that offers a compact and efficient way for executing code across diverse environments, including the web. Previously, Scala couldn’t directly compile to Wasm, but now Scala.js will support Wasm as its new linker backend, thanks to the collaborative efforts of the ScalaCenter and VirtusLab. This development may raise a question: why does Scala aim to compile to Wasm, and how is this achieved?

scala and web assembly logos
Scala|Jun 14, 2024

Overcoming macro annotations

Scala 2 accumulated multiple amazing features that either improve the readability of the code, make it easier to write and maintain, or reduce the amount of boilerplate. Even though most of them have become an integral part of the language, some were only treated as experimental—their goal was to discover new language capabilities. Still, it was treated as a temporal and prone to change solution.

Scala logo on green
Backend Engineering|Jan 30, 2019

On the missing package private — or why Java is better than Kotlin in this regard

Kotlin lacks Java’s package-private visibility, exposing everything by default unless explicitly marked, which can bloat APIs and hinder encapsulation. The author praises Java’s manifest-based modular exports for making visibility decisions more conscious and centralized.

Backend Engineering|Oct 28, 2015

Arrows, Monads and Kleisli — part 1

A general abstraction extends functions into composable building blocks, enabling the expression of business logic as data flows. This shift transforms side‑effecting, exception‑ridden code into clean, purely functional pipelines.

Arrows Monads and Kleisli part 1