Sign in

Adam Warski

@warski.org
737 followers 32 following 546 posts

Sharing elegant solutions to everyday problems | R&D @ VirtusLab, SoftwareMill | #AI #Scala #FP #Java | Blogger | #OSS developer

PostsRepliesMedia
Adam Warski @warski.org · 01/10/2026
ScalaDays: scaladays.org FuncProgConf: funcprogconf.com Scala Summit in SF: luma.com/6ps55unb Chicago meetup: www.meetup.com/chicagoscala... NY meetup: www.meetup.com/ny-scala/eve...
scaladays.org
Scala Days 2026
2026 The leading Scala conference is coming to Berlin CONFERENCE12-13 October 2026 WORKSHOPS14-15 October 2026 Register now! JavaScript ist in Ihrem Browser deaktiviert. Um unseren Ticketshop ohne Jav...
051
Adam Warski @warski.org · 01/10/2026
It's going to be an October with #Scala! Where are we heading with AI software development? What's the role of programming languages? How much can we express & verify through types - and can LLMs help with that? Scala has some interesting propositions addressing these problems!
130
Adam Warski @warski.org · 30/09/2026
Let's discuss the future of Scala in the age of AI, or more generally: the future of FP/statically typed programming in the age of AI. Plus, if you'd be curious about any insights from the main conference, we'll be more than happy to share!
010
Adam Warski @warski.org · 30/09/2026
October 26: #Scala meetup in New York! For those who couldn't attend the full Scala Days experience in Berlin, we're coming over bringing two talks: "Making the AI agents safe with Scala" by Łukasz Biały (the approach that won the best paper award at CAIS 2026) and "Where Scala meets AI" by myself.
meetup.com
Fresh Insights Straight from Scala Days 2026, Mon, Oct 26, 2026, 6:00 PM | Meetup
**Where is Scala heading next?** Scala Meetup New York: Fresh Insights Straight from Scala Days 2026 Join us in New York for a special Scala community meetup, proudly spon
111
Adam Warski @warski.org · 29/09/2026
The first-ever-in-Poland Malayan Tapir was born in the Płock ZOO. He's called Visdom (as in visdom.virtuslab.com), and you can discuss both AI-native SDLC & Scala self-documenting HTTP APIs with him. VirtusLab is a proud sponsor! Pay a visit if you're in the neighbourhood:)
031
Adam Warski @warski.org · 26/09/2026
What might be a better way to interface with TypeSafe AI's #Jev than through a type-safe API? And what language might be better suited for the task than #Scala? That's why sttp-ai now has a fully type-safe Jev integration module: github.com/softwaremill... Enjoy :)
041
Adam Warski @warski.org · 24/09/2026
And if you'd like to get all of that in one package, ready for the enterprise, accelerating adoption of AI in teams, we've got Visdom: our AI-Native SDLC platform visdom.virtuslab.com
visdom.virtuslab.com
Visdom | AI-native software delivery platform
Composable platform for operating AI-native software delivery. Independent components, embedded with your engineers, built for ownership.
000
Adam Warski @warski.org · 24/09/2026
* using Scala? Coding agents generate use more Scala features & leverage benefits of FP when given the right instructions github.com/VirtusLab/sc... * you've got an agent-generated PR to review? Tulip explains the changes step-by-step, mixing code with prose & diagrams: github.com/VirtusLab/tu...
github.com
GitHub - VirtusLab/scala-skill: Claude Code & Codex Scala Skills: generate direct-style applications with use-case driven guides
Claude Code & Codex Scala Skills: generate direct-style applications with use-case driven guides - VirtusLab/scala-skill
100
Adam Warski @warski.org · 24/09/2026
* Cellar allows querying the public API of any Maven dependency - much better than unpacking jars! github.com/VirtusLab/ce... * Orca allows you to write down your development process as deterministic code, and make the agents follow it: github.com/VirtusLab/orca
github.com
GitHub - VirtusLab/cellar: CLI tool for coding agents and developers to query the public API of any Maven JVM dependency — get symbol signatures, list packages, search by name, and inspect dependency ...
CLI tool for coding agents and developers to query the public API of any Maven JVM dependency — get symbol signatures, list packages, search by name, and inspect dependency trees. Powered by Coursi...
100
Adam Warski @warski.org · 24/09/2026
Our AI development stack tailored towards JVM development (#Java, #Scala) is shaping up nicely! * starting with security: Sandcat provides Docker-based sandboxing with devcontainer support github.com/VirtusLab/sa...
github.com
GitHub - VirtusLab/sandcat: A Docker & dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network acce...
A Docker & dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network access rules and injectin...
120
Adam Warski @warski.org · 23/09/2026
Orca (deterministic, AI-driven development flows): updated with the latest Claude / OpenAI models. Plus: define a project-specific reviewer, committed in .orca, which is automatically included in the review loop. github.com/VirtusLab/orca
github.com
GitHub - VirtusLab/orca: Deterministic, AI-driven development flows.
Deterministic, AI-driven development flows. Contribute to VirtusLab/orca development by creating an account on GitHub.
010
Adam Warski @warski.org · 23/09/2026
github.com/VirtusLab/tu... Leave us a ⭐️!
github.com
GitHub - VirtusLab/tulip: Explains GitHub PRs in a human-friendly way, using LLMs.
Explains GitHub PRs in a human-friendly way, using LLMs. - VirtusLab/tulip
000
Adam Warski @warski.org · 23/09/2026
Some improvements to Tulip-generated PR explanations: * the test/docs sections are folded by default * the side menu covers subsections and is foldable * the explanations are encouraged to use more types of diagrams - module dependencies, data flow, class hierarchy - not only sequence diagrams
110
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 16/09/2026
We've got a new home! Check out VSS: VirtusLab Scala Stack! Direct-style, AI-first, type-safe, human & agent-friendly. vss.virtuslab.com
vss.virtuslab.com
VirtusLab Scala Stack (VSS)
Direct-style Scala: type-safe code that is easy to comprehend and generate.
133
Adam Warski @warski.org · 15/09/2026
The Tulip tool - explaining PRs with a walk-through, instead of a code-only review - got a new option: commenting on the PRs straight from the generated page. github.com/virtusLab/tu...
github.com
GitHub - VirtusLab/tulip: Explains GitHub PRs in a human-friendly way, using LLMs.
Explains GitHub PRs in a human-friendly way, using LLMs. - VirtusLab/tulip
000
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 14/09/2026
Following Jox, Ox now has JSON streaming <-> flows integration, covering NDJSON & streaming JSON arrays. jsoniter-based for the best performance! github.com/softwaremil...
github.com
Release v1.0.7 · softwaremill/ox
What's Changed Require only an unsupervised scope in runToInputStream (#507) @adamw Add flow-json module: streaming NDJSON and JSON array support (#506) @adamw Return short reads from runToInp...
011
Adam Warski @warski.org · 14/09/2026
Jox - virtual-thread based safe concurrency & streaming in #Java - gets a dedicated flows<->JSON integration module. NDJSON & streaming-JSON-array is now built-in (since flows release 0.6.0) & waiting for your project! Plus some bug fixes, of course. github.com/softwaremill...
github.com
GitHub - softwaremill/jox: Virtual-thread based safe concurrency & streaming
Virtual-thread based safe concurrency & streaming. Contribute to softwaremill/jox development by creating an account on GitHub.
000
Adam Warski @warski.org · 10/09/2026
Wading through heaps of code changes in a PR to find the meaningful bits? There's a better way than reading the raw diff. Tulip is a command-line utility that explains PRs top-down using prose, diagrams and code; starting with an overview, ending with details. github.com/VirtusLab/tu...
010
Adam Warski @warski.org · 09/09/2026
And you can now read all about those features, and how to use them, here: sandcat.virtuslab.com/latest/index... The quickstart is still quick, just install the CLI and run `sandcat init` followed by `sandcat run`!
sandcat.virtuslab.com
Sandcat: sandbox for securely running AI agents in “dangerous” mode — sandcat latest documentation
000
Adam Warski @warski.org · 09/09/2026
The project gained quite a lot of features recently, including: * multiple agent support (Claude, Codex, Cursor, Copilot) * network rules presets * JVM dependency caching in a single volume * devbox-managed dependencies * support for resolving intranet services via customisable DNS settings
100
Adam Warski @warski.org · 09/09/2026
Sandcat - a #Docker & dev container setup for securely running AI agents in `--dangerous` mode - has a brand new documentation page!
110
Adam Warski @warski.org · 08/09/2026
True, it was a discovery process. Now it's often discovery after a ton of code was already generated ;)
000
Adam Warski @warski.org · 07/09/2026
The main role of a software engineer nowadays seems to be asking the right questions. Exploring paths the coding agent didn't think of, and getting a genuine "you're absolutely right". Or maybe this was always the case - we were just interrupted by coding.
183
Adam Warski @warski.org · 02/09/2026
That's exactly why every change I generate, before I even look at it, goes through a `minimalism` reviewer. Automated through Orca (github.com/VirtusLab/orca), of course ;)
github.com
GitHub - VirtusLab/orca: Deterministic, AI-driven development flows.
Deterministic, AI-driven development flows. Contribute to VirtusLab/orca development by creating an account on GitHub.
000
Adam Warski @warski.org · 02/09/2026
Christin, you'd love the simplicity of our codebases written with Scala, Tapir, no-DI :) And in the AI days, being mindful and selective in the code we generate is even so more important. Having lots of software will never fix the problem.
110
Adam Warski @warski.org · 02/09/2026
Minimalism helps to capture the essence of a problem and solve it the "right way". But of course what's especially close to my heart is the callout on the unnecessary complexity introduced into thousands of codebases with Spring & annotation hell (blog.softwaremill.com/the-case-aga...).
blog.softwaremill.com
The case against annotations
Annotations were introduced to Java in 2004 and have since enabled a lot of progress and vastly improved the way we write software in the…
100
Adam Warski @warski.org · 02/09/2026
Great talk at @javazone.bsky.social by @christingorman.bsky.social on the value of minimalism ("negative space") - in software, but also in life. And it's not only about elegance - which is a trait of many minimalist designs - but predominantly of utility & function.
150
Adam Warski @warski.org · 01/09/2026
Getting ready for JavaZone! Especially for the second day, 3rd of September, 14:20 in room 7 - where I'll be talking about a way to gain more confidence in the concurrent Java code you write, er, sorry, generate. See you there? :)
010
Adam Warski @warski.org · 31/08/2026
The final part of our #TigerBeetle vs #PostgreSQL benchmarks are here - this time, running both databases in the cloud, as they were designed to be run. What are the results? Is TigerBeetle still that much faster, as was the case locally? softwaremill.com/tigetbeetle-...
softwaremill.com
TigerBeetle vs PostgreSQL Performance: Benchmark Harness, Cloud Tests
Discover how TigerBeetle compares to PostgreSQL in multinode cloud benchmarks for financial double-entry bookkeeping. Compare throughput, latency, and high-contention results.
000
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 31/08/2026
sttp-ai - the #Scala toolkit for working with third-party LLMs - has seen a LOT of evolution lately, especially around the API to code agent behaviour in a flexible, but of course type-safe way. Let's take a code-first tour of the most important features!
121
Adam Warski @warski.org · 28/08/2026
Lots of Orca updates: * full worktree support * improved review pipeline, tuning what is sent to the agents (diffs / diffs of diffs), and the reviewer prompts * more reliable cost estimations github.com/VirtusLab/orca
github.com
GitHub - VirtusLab/orca: Deterministic, AI-driven development flows.
Deterministic, AI-driven development flows. Contribute to VirtusLab/orca development by creating an account on GitHub.
000
Adam Warski @warski.org · 28/08/2026
AI took my job, now I'm a travel blogger. warski.org/blog/a-week-... j/k, I still have my job, but I did make a departure from the usual programming subjects that I write about, towards an article covering the research on how to best spend time in the Spanish Pyrenees :)
warski.org
A week in Valle de Tena (Pyrenees) with kids & teenagers | Adam Warski: programming articles & videos
The holiday season is almost over, so it’s high time to plan the next one! Maybe our experiences from a recent trip to Spain will provide you with some inspiration.
000
Adam Warski @warski.org · 05/08/2026
* support for Jetbrains IDEs via devcontainers * devbox instead of mise for managing installed tools & more is coming :) github.com/VirtusLab/sa...
github.com
GitHub - VirtusLab/sandcat: A Docker & dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network acce...
A Docker &amp; dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network access rules and injectin...
120
Adam Warski @warski.org · 05/08/2026
What's new in Sandcat - docker/devcontainer setup for securely running AI agents dangerously? Quite a lot! * OOTB Codex support, next to Claude and Cursor * install/update script * rtk by default * shared JVM dependency volume by default
github.com
GitHub - VirtusLab/sandcat: A Docker & dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network acce...
A Docker &amp; dev container setup for securely running AI agents in `--dangerous` mode. All container traffic is routed through a transparent mitmproxy, enforcing network access rules and injectin...
120
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 05/08/2026
Updates in our AI Scala stack: sttp-ai (client for OpenAI, Claude, and other APIs, along with an agent loop): supporting timeouts & retries; Azure OpenAI support chimp (type-safe, boilerplate-less MCP servers and clients): supporting outputSchema in tool definitions
131
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 29/07/2026
sttp-ai - new features, updated docs: • first-class Gemini support - direct API implementation, with the usual type-safety, plus agent loop integration • refined docs, describing each integration & feature with examples sttp-ai.softwaremill.com
011
Adam Warski @warski.org · 28/07/2026
Simple installation, interactive & headless mode. Plus a skill so that you can start Orca flows straight away from a planning session. Enjoy :) github.com/VirtusLab/orca
github.com
GitHub - VirtusLab/orca: Deterministic, AI-driven development flows.
Deterministic, AI-driven development flows. Contribute to VirtusLab/orca development by creating an account on GitHub.
000
Adam Warski @warski.org · 28/07/2026
Orca - deterministic, AI-driven development flows - now comes with a shell! Run one of the built-in flows for a deterministic plan-implement-review loop, or create your own flow - by hand or prompting your favourite agent harness.
110
Adam Warski @warski.org · 27/07/2026
Optionally, you can persist such rules in an AGENTS.md file or skill - although the problems found that way, even after generalisation, tend to be quite project-specific, so probably the project's memory is the best place.
010
Adam Warski @warski.org · 27/07/2026
Then I hand over the found issues (there are always some, I'm picky) to the coding agent, to fix them. After it's done, I ask what kind of general rules can be derived from that (specific) review - and then to apply those general rules to the whole PR.
100
Adam Warski @warski.org · 27/07/2026
What I do, is I review a small portion of the generated code - something that can be traced end-to-end, like a feature fragment, a call-chain, or a single file/class. This review is quite detailed.
100
Adam Warski @warski.org · 27/07/2026
My latest strategy for reviewing large amounts of AI-produced code: spot-checks. This will work, assuming that you know the language & ecosystem in which the code is produced (I still sometimes do ;) ).
220
Reposted by Adam Warski
Scala Space @scalaspace.bsky.social · 23/07/2026
New features in the latest version of Ox: • `abanonOnInterrupt` for operations which aren't interruptible (e.g. Java's stdin) • resource-only scopes (`resourceScope`) • `computeIntensive` for operations which might monopolize a carrier thread github.com/softwaremil...
github.com
GitHub - softwaremill/ox: Safe direct-style streaming, concurrency and resiliency for Scala on the JVM
Safe direct-style streaming, concurrency and resiliency for Scala on the JVM - softwaremill/ox
121
Adam Warski @warski.org · 16/07/2026
You can now use the same flow script with a Rust, Scala, Typescript or Java project! Orca on GitHub: github.com/VirtusLab/orca
github.com
GitHub - VirtusLab/orca: Deterministic, AI-driven development flows.
Deterministic, AI-driven development flows. Contribute to VirtusLab/orca development by creating an account on GitHub.
010
Adam Warski @warski.org · 16/07/2026
Orca update: flow scripts are now language-agnostic. Orca will now auto-detect the commands needed to format, lint (compile) and test a project on first use, using a cheap LLM model. These are the written to `.orca/settings.properties`, where you can adjust as needed.
100
Adam Warski @warski.org · 16/07/2026
On the other hand, elegant, maintainable designs require effort. Some of the effort can be handled using agents, but some still requires a careful human eye and proper supervision.
000
Adam Warski @warski.org · 16/07/2026
Complex designs arise quickly. That's because adding complexity is often the easy thing to do; the code looks fine, it works, but if you take a look under the hood, you see a tangled mess that eventually will take its toll.
100
Adam Warski @warski.org · 16/07/2026
Which, once explicitly pointed out, the AI can fix. In his LLM wiki, Andrej Karpathy does the same thing: there's a `lint` command that should be run periodically to clean up accumulated cruft. The domain is different (an entirely AI-generated knowledge base vs. code), but the workflow is similar.
100
Adam Warski @warski.org · 16/07/2026
Given the right prompt (one example pictured), AI agents can remove some complexity by introducing abstractions. But when I take a look at the code, I can still quite quickly identify places which just scream "this complexity shouldn't be here" and ask for a nicer alternative.
100
Adam Warski @warski.org · 16/07/2026
I've been running experiments on the AI-written codebases that I work on. The main result: cleaning up tech debt is mostly a discovery ("where the complexity is"), not an implementation-skill problem.
100