Lagom is approaching end of life: possible migration paths

Lagom, an opinionated microservices framework, is reaching end-of-life on July 1st, 2024. Beyond this date, no additional security or bugfix patches will be provided. Quite naturally, this raises questions about production applications that are based on the framework; keeping sof … | Continue reading


@softwaremill.com | 6 months ago

Benchmarking Java Streams

In my previous article, I took a closer look at the Java ExecutorService interface and its implementations, with some focus on the Fork/Join framework and ThreadPerTaskExecutor. Today, I would like to take a step forward and check how well they behave when put under pressure. In … | Continue reading


@softwaremill.com | 6 months ago

IO effect tracking using Ox

Ox, a library for safe direct-style concurrency and resiliency in Scala on the JVM, recently gained a new feature: the IO capability. IO is designed to be part of the signature of any method that performs I/O, either directly or indirectly. The broader goal of the IO capability f … | Continue reading


@softwaremill.com | 6 months ago

What are language agents?

With more prevalent applications like chatGPT, Siri, or Alexa, we slowly surround ourselves with technology we may not fully understand. This article aims to give you a glimpse into the area of language agents. The structure of that blog post is as follows: first, we will discuss … | Continue reading


@softwaremill.com | 6 months ago

Introduction to OtterJet

In software architecture, observability is one of the most important characteristics. This is especially true for distributed systems. Communication between services often happens asynchronously by sending messages, which introduces complexity for the application's testability. I … | Continue reading


@softwaremill.com | 6 months ago

Observability part 1 - building blocks overview

Hello! Chances are that you clicked this article to get to know something about our new Meerkat project. This is the first article of a series about observability and our attempt towards giving back to the open source community, so I hope you'll stay tuned for the upcoming parts … | Continue reading


@softwaremill.com | 6 months ago

A Busy Developer’s Guide to Quantum Computing Part 4

In the previous Part of the series I briefly showed how programming a quantum computer looks like. Check all the articles from the series: Part 1 A gentle overview Part 2 Basic building blocks Part 3 Programming a quantum computer In this Part I’m going to show you a working exam … | Continue reading


@softwaremill.com | 6 months ago

What kind of AI Chatbot do you need?

An AI Chatbot is an instruction-tuned Large Language Model (LLM). Such a chatbot can provide fast, accurate, and relevant answers to questions it is faced with. However, it is limited to the information, text tone, format, and style it was trained on. The Retrieval Augmented Gene … | Continue reading


@softwaremill.com | 6 months ago

Kafka queues: now and in the future

Kafka is the leading messaging & streaming platform and the de-facto standard for transporting large amounts of data. The primary abstraction in Kafka is a topic, divided into partitions. Because Kafka topics are partitioned, they have excellent scaling characteristics, limited o … | Continue reading


@softwaremill.com | 6 months ago

Synchronising Concurrent Tasks in Rust Using Tokio

In the world of concurrent programming, managing access to shared resources and synchronising tasks are critical challenges that developers face. Rust, known for its safety and performance, offers an excellent concurrency model through ownership, types, and the borrow checker. Ho … | Continue reading


@softwaremill.com | 6 months ago

How to use intelligent document processing in your business

Why documents? Documents, in digital and printed form, are the main means of formal communication within and between companies. It is a universal way of exchanging information regardless of industry, country, or language. What's more, document circulation is often enforced by law … | Continue reading


@softwaremill.com | 6 months ago

Integrating callbacks with structured concurrency in Scala

Structured concurrency allows to run asynchronous tasks within clearly defined boundaries of supervision. Introduced as a preview feature in Java 19, it helps to manage the lifecycle of running forks by requiring the developer to define a scope and enforcing the rule that tasks c … | Continue reading


@softwaremill.com | 6 months ago

Safe direct-style Scala: Ox 0.1.0 released

After a couple of months spent in an experimental phase and several iterations around the design of structured concurrency scopes and error handling, we are pleased to announce the 0.1.0 release of the Ox project. What is Ox? The project's motto says it best: Safe direct-style co … | Continue reading


@softwaremill.com | 7 months ago

Discover the highlights: Scalar Conference 2024

Held annually in Warsaw, Poland, Scalar has established itself as THE place to be for Scala enthusiasts, software engineers, and technology leaders. This year's Scalar Conference was particularly special as we celebrated two major milestones: the 20th anniversary of the Scala pro … | Continue reading


@softwaremill.com | 7 months ago

A Busy Developer’s Guide to Quantum Computing - Part 3

In the previous Parts of the series I gave a quick overview of a quantum computer and talked a little bit about qubits and other building blocks behind that picture. Check all the articles from the series: Part 1 A gentle overview Part 2 Basic building blocks In this Part I’m goi … | Continue reading


@softwaremill.com | 7 months ago

Jacek Kunicki - My Scala Story

We celebrate Scala's 20th anniversary in 2024 and invited experts to share their Scala Stories. Jacek Kunicki is a Senior Software Engineer, conference speaker, and SoftwareMill Academy lead. You can follow him on X: @rucek How did you first get introduced to Scala, and what did … | Continue reading


@softwaremill.com | 7 months ago

Remote Event Storming challenges from a facilitator's perspective

Have you ever thought about conducting an Event Storming workshop remotely? Does it make sense and is it feasible? As SoftwareMill, we are a 100% remote company, and the clients we work for are scattered around the world across different time zones. Organizing an on-site Event St … | Continue reading


@softwaremill.com | 7 months ago

A Busy Developer’s Guide to Quantum Computing - Part 2

Introduction In the previous Part of the series, I gave a quick overview of a quantum computer. In this Part, I’m going to talk a little bit about qubits and other building blocks behind that picture. I keep it lightweight, showing only the parts necessary to understand the logic … | Continue reading


@softwaremill.com | 7 months ago

Managing complexity and uncertainty in Software Development: know when to press pause

Whenever there is a new feature or entirely new system to be introduced, we usually expect the task to be solved by writing new or changing existing software to support it. It is indeed true in most cases - that’s what we usually do: we build software that meets business needs. S … | Continue reading


@softwaremill.com | 7 months ago

Stream Gatherers in practice Part 2

This second article continues our exploration of Stream Gatherers, introduced in Java 22 with JEP 461. After detailing the Gatherer interface and custom operations in the first part, we now shift focus to built-in gatherers, examining their capabilities. Furthermore, we'll delve … | Continue reading


@softwaremill.com | 7 months ago

A Busy Developer’s Guide to Quantum Computing - Part 1

Motivation A quantum computer provides a special form of parallelism. By utilizing it, the quantum computer should be able to compute things faster than its classical counterpart. However, to make use of it, problems need to be approached differently, using specifically designed … | Continue reading


@softwaremill.com | 7 months ago

Full stack JavaScript technologies & trends to watch for in 2024

Full stack JavaScript development keeps storming the software & technology world and seems to take no break. In this article, I want to lay out my subjective assessment of trending technologies to keep an eye on in the coming months. These are mostly based on the community focus … | Continue reading


@softwaremill.com | 7 months ago

Big Picture Event Storming: Simple Workshops, Big Benefits for Your Business

As part of our initiative to share knowledge about Domain Driven Design and related tools - I would like to tell you about one of the interesting workshops we use in our clients' projects. It is called the Big Picture Event Storming workshop, which leads to the discovery of relev … | Continue reading


@softwaremill.com | 8 months ago

KubeCon EU 2024  -  summary of conference worth every penny

KubeCon goes mainstream, and it is the most amazing conference I’ve been to so far. At the same time, ‘amazing’ is not a good word for describing how awesome it was. People, talks, organization, everything was on point. And knowledge — so much of it that I have a list of TODO stu … | Continue reading


@softwaremill.com | 8 months ago

What is infrastructure as code (IaC) and why I should care?

Introduction I have a conviction that this term has been used for so long that it’s lost its meaning along the way. It’s not the buzzword it used to be not that long ago. I’ll do my best to describe this topic despite it going out of fashion because it’s as relevant as ever. Let' … | Continue reading


@softwaremill.com | 8 months ago

Benchmarking Tapir: Part 3 (Loom)

Introduction Recently, I wrote two blog posts about Tapir performance benchmarks: [Part 1]() and https://softwaremill.com/benchmarking-tapir-part-1/, Part 2. These tests allowed us to implement many significant optimizations (see GitHub milestone here). As a bonus, I’d like to us … | Continue reading


@softwaremill.com | 8 months ago

Krzysztof Ciesielski - My Scala Story

Scala is celebrating its 20th anniversary in 2024, so we invited Scala experts to share their Scala Stories. One of the experts is Krzysztof Ciesielski, Senior Software Engineer at SoftwareMill. You can follow him on X: @kpciesielski How did you first get introduced to Scala, and … | Continue reading


@softwaremill.com | 8 months ago

Event Storming from a non-technical domain expert perspective

Some time ago we started a Domain Driven Design initiative at SoftwareMill. Our goal here is to spread the knowledge and our experience with DDD together with multiple complementary tools and techniques we use regularly on clients’ projects. After some quest for a problem and dom … | Continue reading


@softwaremill.com | 8 months ago

Stream Gatherers in practice Part 1

Java 22 introduces an interesting preview feature with JEP 461: Stream Gatherers, a pivotal upgrade to the Stream API. This feature centers around a new gather method, enhancing the API's customization, flexibility, and efficiency. It's designed to: Elevate the Stream API's adapt … | Continue reading


@softwaremill.com | 8 months ago

Monica McGuigan - My Scala Story

Scala experts share their Scala Stories to celebrate the 20th anniversary of Scala in 2024. Meet Monica McGuigan, and follow her on LinkedIn. How did you first get introduced to Scala, and what did you think about it? I started properly learning Scala in 2022 when I joined my cur … | Continue reading


@softwaremill.com | 8 months ago

Handling errors in direct-style Scala

Error handling is the cornerstone of any library that orchestrates the execution of user-provided code. That's also the case in ox, a library for safe direct-style concurrency and resiliency for Scala on the JVM. Many of ox's features are centered around error handling: structure … | Continue reading


@softwaremill.com | 8 months ago

Big Picture Event Storming - finding the gaps

In my latest article of the series about our Domain-Driven Design show-case project, which you can read more about here, I covered our kickoff session of Big Picture Event Storming. Quick recap: we started with a chaotic exploration, which was a brain dump of relevant domain even … | Continue reading


@softwaremill.com | 8 months ago

Zainab Ali - My Scala Story

Another wonderful guest in our My Scala Story series is Zainab Ali. She is a functional programmer, educator, open source contributor and organizer of the London Scala User Group. She is a maintainer of fs2 and the original author of its reactive streams component. For the past f … | Continue reading


@softwaremill.com | 8 months ago

JDK 22 in a nutshell

With the regular cadence of Java releases, developers eagerly anticipate each new version for the enhancements and features it brings. As the next iteration, Java 22, prepares for release on 19th March, it's time to dive into the improvements and updates that await. From performa … | Continue reading


@softwaremill.com | 8 months ago

Thriving Remotely: My Journey with SoftwareMill

I had never been fully convinced about remote work. It just didn't feel right. It was hard to imagine how to become truly involved and immersed in the company's day-to-day operations. I wanted my contributions to be relevant and meaningful, not just to check tasks off a list. As … | Continue reading


@softwaremill.com | 8 months ago

From Code To Pixels. About Web Rendering

In 2024, 8 years will pass since I started to work in IT. I began my journey as a junior UI designer in 2016 and then, after some time, I switched to a front end developer role. I was always interested in moving things on the screen, especially in the browser. Yet, only fairly re … | Continue reading


@softwaremill.com | 8 months ago

Benchmarking Tapir: Part 2

Introduction In the previous part, I analyzed how a combination of Tapir+low-level server handles high load of HTTP requests in comparison with using unwrapped, “vanilla” servers directly. It allowed us to identify a few bottlenecks, as well as confirm Tapir’s low overhead in man … | Continue reading


@softwaremill.com | 9 months ago

Do not copy successful architectures

One common mistake in software architecture is blindly copying successful architectures without considering a project's unique needs and context. For example, many companies try to replicate the architecture of successful companies like Netflix without considering whether it is a … | Continue reading


@softwaremill.com | 9 months ago

Gabriel Volpe - My Scala Story

We invited Scala experts to share their Scala Stories to celebrate Scala's 20th anniversary. Gabriel Volpe is a Software Engineer specialized in a functional programming. You can visit his website and follow him on X: @volpegabriel87. How did you first get introduced to Scala, an … | Continue reading


@softwaremill.com | 9 months ago

Big Picture Event Storming - mastering chaos

Chaos is considered the primordial state or the first condition of the universe from which everything else originated. The sentence “At first Chaos came to be” from Hesiod's Theogony perfectly describes this concept. Despite its mythological origins, it accurately describes pheno … | Continue reading


@softwaremill.com | 9 months ago

SSE vs WebSockets: Comparing Real-Time Communication Protocols

In today's text, I want to take a closer look at Server Sent Events (or SSE for short) and WebSockets. Both are good and battle-tested approaches to data exchange. I will start with a short characteristic of both tools – what they are and what they offer. Then, I will compare the … | Continue reading


@softwaremill.com | 9 months ago

Jox 0.1: virtual-thread friendly channels for Java

The goal of the jox project is to facilitate communication between virtual threads: competitive in terms of performance to the state-of-the-art (on the JVM, and generally) with a low memory footprint so that the number of channels might scale together with the number of virtual t … | Continue reading


@softwaremill.com | 9 months ago

What to do with your End Of Life Akka?

In September 2022 Lightbend surprised the Scala community by announcing the Akka license change for all future releases from Apache 2.0 to "source available" Business Source License (BSL) v1.1. In practice that means that businesses who would like to use newer versions and get ov … | Continue reading


@softwaremill.com | 9 months ago

Domain-Driven Design: a SoftwareMill way

Modern software development demands not only a solid understanding of technology but also a comprehensive grasp of the business driving the software. This includes knowledge of the operational domain and organizational structure. Fortunately, the software development industry has … | Continue reading


@softwaremill.com | 9 months ago

Tomas Mikula - My Scala Story

Join us in celebrating Scala's 20th anniversary in 2024! We've gathered a group of Scala experts to share their amazing Scala Stories. Tomas Mikula is a Lead Software Engineer, you can follow him on X, GitHub and LinkedIn. How did you first get introduced to Scala, and what did y … | Continue reading


@softwaremill.com | 9 months ago

Benchmarking Tapir: Part 1

Tapir is a well-adopted Scala library that makes building web APIs easier. It uses Scala's strong type system, letting you create endpoints, generate documentation, handle errors, work with cross-cutting concerns (interceptors, security), and work with JSON, all with the help of … | Continue reading


@softwaremill.com | 9 months ago

Paweł Marks - My Scala Story

Another day, another My Scala Story episode! Read the #scalaversary-inspired relation about his Scala journey by Paweł Marks. Paweł is the Team Leader of the Scala Compiler Team at VirtusLab and the Release Officer of Scala 3. How did you first get introduced to Scala, and what d … | Continue reading


@softwaremill.com | 9 months ago

19 Best Tech Conference in Europe in 2024

Searching for self-development opportunities can be challenging and time-consuming, as it involves sifting through various resources to find the right fit for your personal and professional growth. To ease this process, we've compiled a curated list of tech conferences that offer … | Continue reading


@softwaremill.com | 9 months ago