Adam Warski
warski.org
Adam Warski
@warski.org
Sharing elegant solutions to everyday problems | R&D @ SoftwareMill | #Scala / functional programmer #FP | Blogger | #OSS developer
How does an AI agent work?

We've prepared a visualization to help you understand just that: how an LLM is involved, where tool invocation happens, and how an agent loops.

Enjoy! virtuslab.com/agent-visual...
Agent Visualization - VirtusLab | Software Consulting & Engineering
Real-time view of an AI agent's decision-making process and activities
virtuslab.com
January 15, 2026 at 10:16 AM
We've got a long & rich history with #Kafka, and this is a culmination of our efforts led by Michał Matłoka - congrats! :)

Multiple client deployments, certifications achieved, OSS projects, educational materials - there are many ways in which we are involved in the Kafka ecosystem.
SoftwareMill is now a 🔹 Confluent Elite Partner 🔹

We’re proud to announce that SoftwareMill has achieved the highest tier in Confluent’s partner program! We are the only company in Poland to hold Elite status!

🔗 Learn more about our Confluent partnership: sml.io/confluent-pa...

#confluent
January 13, 2026 at 2:03 PM
Why is it that it’s the exciting part of programming that is automated (coding), but we’re expected to do the boring one (code review), not the other way round?
January 13, 2026 at 10:40 AM
Happy to report that jox helped uncover a bug in the #JVM (race in virtual thread scheduling).

My first after 20 years of working with #Java :)

bugs.openjdk.org/browse/JDK-8...
bugs.openjdk.org
January 12, 2026 at 7:49 AM
Reposted by Adam Warski
You’ve probably heard of TigerBeetle. But do you know what actually makes it stand out? 🤔

🔗 @warski.org explains why it is so interesting: softwaremill.com/whats-intere...

#Database #FinTech #Clustering #Replication
January 8, 2026 at 12:28 PM
Adopt-Tapir gets even simpler! You can choose an SBT project (multi-file + tests), or a single-file scala-cli script.

All you need to get started with a self-documenting, type-safe, observable JSON API is generating a single file with ~30 lines of code.

adopt-tapir.softwaremill.com
Adopt Tapir
Generate tapir project with just few clicks
adopt-tapir.softwaremill.com
January 8, 2026 at 11:27 AM
Jox's Flows (#Java virtual-thread native asynchronous streaming) now have a #Kafka integration, thanks to Robert Pudlik: jox.softwaremill.com/latest/kafka...
Kafka flows — Jox 1.x documentation
jox.softwaremill.com
January 7, 2026 at 3:15 PM
You might have heard about @tigerbeetle.com - but do you know why it's interesting?

Fixed schema - sounds limiting. Replication, high-availability? Everybody says so (well, at least a lot do). Still, TigerBeetle is different. Here's why:

softwaremill.com/whats-intere...
What’s Interesting About TigerBeetle?
TigerBeetle is a fixedschema, performance-oriented, replicated, highly available financial database that generates a seemingly disproportionate amount of attention. What's the fuss? What is interestin...
softwaremill.com
January 7, 2026 at 9:39 AM
What happens when you vibe-code a simple web app and check against the OWASP Top10 vulnerabilities?

Well, you get a lot of ❌. True, the use-case has a lot of opportunities to make mistakes, but then, which use-case doesn't?

softwaremill.com/vibe-coding-...
Vibe Coding Against OWASP Top 10 2025 - Security Risks of AI-Driven Development
Explore how vibe coding with AI exposes OWASP Top 10 2025 vulnerabilities and why “ship fast, fix later” can lead to serious web security risks.
softwaremill.com
December 23, 2025 at 10:10 AM
Reposted by Adam Warski
✨ Concurrency doesn’t have to mean tangled abstractions. This session walks through Ox 1.0 and its direct-style approach to concurrency and resiliency.
Here’s "A Tour of Ox 1.0: Direct-Style Concurrency and Resiliency" by Adam Warski
Adam Warski: A Tour of Ox 1 0 - Direct Style Concurrency and Resiliency [Scala Days 2025]
Ox provides a toolkit for safe concurrency and resiliency for Scala on the JVM. After two years of prototyping, we’re delighted to showcase the final product. With Ox, you can build and deliver direct-style Scala applications today. In the code-first presentation, we’ll begin with concurrency (incl
www.youtube.com
December 18, 2025 at 1:23 PM
Reposted by Adam Warski
The third episode of Beyond the Commit 🎙️ drops tomorrow!

This time, Paweł Dolega sits down with Sebastian Titze, CTO at Corify, to tackle one of the biggest challenges in software organizations: technical debt.

Don’t miss it! 🫵

#TechDebt #BeyondTheCommit #Podcast #CTO
December 17, 2025 at 8:59 AM
Reposted by Adam Warski
The next episode of Beyond the Commit 🎙️ goes live on Thursday!

This time our host, Pawel Dolega, welcomes Sebastian Titze, CTO at Corify, for a conversation about tech debt and how to manage it across an organization - packed with practical insights you won’t want to miss.

#TechTalk #TechDebt #CTO
December 16, 2025 at 9:50 AM
Interesting take on separating Tapir endpoint descriptions & the server logic, while making sure that every endpoint is used & implemented:

github.com/arkida39/baku
GitHub - arkida39/baku: A Scala Tapir extension to cleanly decouple API definitions from server and security logic.
A Scala Tapir extension to cleanly decouple API definitions from server and security logic. - arkida39/baku
github.com
December 12, 2025 at 4:16 PM
Robert Pudlik is always the first to try out new coding models, IDEs and tools (and with a new IDE each day ... that's a lot of work).

And with good effects! But his AI usage is guided by rules - he describes how to effectively do so below:

virtuslab.com/blog/ai/how-...
How To Write Rules for AI Coding Tools
How to write focused, effective AI coding rules.
virtuslab.com
December 12, 2025 at 2:26 PM
Reposted by Adam Warski
Welcome Krzysztof Grajek as the #rustikon speaker!

🎙️ Supercharging Axum Development with Claude Code: Practical AI-Assisted Workflows for Rust Engineers

🎟️ Grab your ticket here: www.rustikon.dev/tickets

#rustlang #rustconference
December 11, 2025 at 9:27 AM
Reposted by Adam Warski
YavaConf was a blast🔥

Thank you to everyone who attended the presentations by Adam Warski, Michał Zyga, and Artur Skowroński!

The 2026 lineup promises to be equally rich and engaging, and includes @rustikon.dev and @scalar-conf.com!

We hope to see you there, too!

#yavaconf #jvm #java #loom
December 11, 2025 at 12:34 PM
It's not everyday that your work colleague writes a book for Manning! Especially that Manning has a strong brand, which just makes this even more interesting!
December 11, 2025 at 8:37 AM
Due to a surprisingly fast code rot, the runnable examples in the Chimp library (type-safe, boilerplate-less #MCP servers in #Scala using the HTTP transport) didn't work OOTB.
chimp/examples/src/main/scala/chimp at master · softwaremill/chimp
Build type-safe, boilerplate-less MCP servers in Scala using the HTTP transport - softwaremill/chimp
github.com
December 10, 2025 at 1:38 PM
In case you would run out of YouTube content to watch, two of my talks are now publicly available:

"What is Functional Programming?" from @lambdadays.bsky.social
www.youtube.com/watch?v=pnZS...
What is Functional Programming? - Adam Warski | Lambda Days 2025
YouTube video by Code Sync
www.youtube.com
December 10, 2025 at 11:05 AM
Method profiling on the #JVM: a quick but in-depth look at what data and data structures are used to decide when, and how to optimise a method. Making the JVM a bit less magical!

By Michał Zyga:
softwaremill.com/introduction...
Introduction to JVM Method Profiling
The size of the method compiled by the JIT compiler depends on the amount of profiling data included. But what does that actually mean? In this article, I will answer that question and also explain ho...
softwaremill.com
December 9, 2025 at 12:52 PM
Slides from my Ya!vaConf today "From Reactive Streams, through Virtual Threads, to Flows": adamw.github.io/ox-flows-pre...
reveal.js
adamw.github.io
December 5, 2025 at 3:44 PM
Latest Tapir (#Scala rapid self-documenting HTTP API development) offers more precise logging & metrics. So that you always know what's up with your application! github.com/softwaremill...
Release v1.13.0 · softwaremill/tapir
Major changes The changes in this minor release mostly concern the server interpreters. The request handling result that is passed through the interceptor stack now contains additional metadata whi...
github.com
December 5, 2025 at 2:19 PM
Reposted by Adam Warski
While I was reading I kept thinking, isn’t this like Rust’s borrow checker and indeed: “Given the foundation provided by the capture checker, the Scala team is now working on using it to implement separation checking. This will allow tracking the use of mutable values and the aliasing of references”
Safe resource usage is coming to #Scala!

Scala 3.8 is just around the corner (you can test 3.8.0-RC3) - it's a great occasion to try out capture checking. But first, you have to understand how it works - here's my attempt: softwaremill.com/understandin...
Understanding Capture Checking in Scala | SoftwareMill
Capture checking is an upcoming Scala feature that allows you to track which designated values (capabilities) are captured (i.e., stored as references) by arbitrary other values. This tracking happens...
softwaremill.com
December 4, 2025 at 5:18 PM
Safe resource usage is coming to #Scala!

Scala 3.8 is just around the corner (you can test 3.8.0-RC3) - it's a great occasion to try out capture checking. But first, you have to understand how it works - here's my attempt: softwaremill.com/understandin...
Understanding Capture Checking in Scala | SoftwareMill
Capture checking is an upcoming Scala feature that allows you to track which designated values (capabilities) are captured (i.e., stored as references) by arbitrary other values. This tracking happens...
softwaremill.com
December 4, 2025 at 2:19 PM
What did we #AI this month?

Łukasz Lenart explains how to configure Claude, with an example involving JetBrains's MCP.

Jacek Centkowski describes how he prepared a lightning talk with #ChatGPT.
December 3, 2025 at 4:12 PM