Open in app

Sign in

Write

Sign in

Adam Warski
Adam Warski

2.3K Followers

Home

About

Published in

SoftwareMill Tech Blog

·Aug 16

Principles of developing applications in Scala

Scala, a statically-typed functional programming language, has been on the market for almost 20 years. During that time, a couple of mainstream approaches have evolved when it comes to writing Scala code. These include using effect systems, techniques of asynchronous code execution, and leveraging various libraries and frameworks. While these…

Java

7 min read

Principles of developing applications in Scala
Principles of developing applications in Scala
Java

7 min read


Published in

SoftwareMill Tech Blog

·Jul 21

Go-like channels in Scala: receive, send, and default clauses

Ox, an experimental concurrency library using Project Loom and Scala 3, offers features such as developer-friendly structured concurrency, scoped values, and implementation of Go-like channels. Channels have been introduced some time ago, along with higher-level combinators, allowing working with streams in both functional and imperative styles, depending on the use…

Scala

7 min read

Go-like channels in Scala: receive, send, and default clauses
Go-like channels in Scala: receive, send, and default clauses
Scala

7 min read


Published in

SoftwareMill Tech Blog

·Jul 10

What is blocking in Loom?

Project Loom introduces the concept of Virtual Threads to Java’s runtime and will be available as a stable feature in JDK 21 in September. Project Loom aims to combine the performance benefits of asynchronous programming with the simplicity of a direct, “synchronous” programming style. To achieve the performance goals, any…

Java

12 min read

What is blocking in Loom?
What is blocking in Loom?
Java

12 min read


Published in

SoftwareMill Tech Blog

·Jun 22

Two types of futures

Futures and promises have made their way into most of the mainstream languages. We intuitively know what a future represents, but what’s the precise definition? Are the concepts and mechanics behind futures/promises always the same, or are there some differences? Let’s reach out to Wikipedia for a start; Wikipedia articles…

Java

6 min read

Two types of futures
Two types of futures
Java

6 min read


Published in

SoftwareMill Tech Blog

·Mar 6

Cancelling HTTP requests on the JVM

HTTP is one of the primary ways of exposing applications to the outside world and communicating microservices within a system. Almost every backend service, at some point, performs an HTTP request. However, in certain situations, we are no longer interested in the results of an HTTP call. …

Http

8 min read

Cancelling HTTP requests on the JVM
Cancelling HTTP requests on the JVM
Http

8 min read


Published in

SoftwareMill Tech Blog

·Feb 3

Prototype Loom-based concurrency API for Scala | SoftwareMill

Java 19 brought a preview of virtual threads and an API for structural concurrency. Java 20 extends this with ScopedValues, a much-improved version of ThreadLocal s. When writing concurrent code in Java, the first option is to work directly with threads (virtual or not). However, this is usually not the…

Scala

9 min read

Prototype Loom-based concurrency API for Scala | SoftwareMill
Prototype Loom-based concurrency API for Scala | SoftwareMill
Scala

9 min read


Published in

SoftwareMill Tech Blog

·Jan 5

Trying out Unison, part 4: from the edge to the cloud

In the previous installments of the “Trying out Unison” series, we’ve first explored its core feature, content-addressed code, thanks to which a function’s identity is determined by what it does, not by its name (names are just labels). Then, we’ve examined how this impacts how you might organize your code…

Cloud

9 min read

Trying out Unison, part 4: from the edge to the cloud
Trying out Unison, part 4: from the edge to the cloud
Cloud

9 min read


Published in

SoftwareMill Tech Blog

·Nov 21, 2022

The architecture of Mastodon

While uncertainty surrounds Twitter, people are looking into alternative microblogging platforms. One such application is gaining a lot of popularity, Mastodon. The concept is similar to Twitter: we can post toots (short messages), which are visible to our followers; we can boost (retweet) posts or favorite (like) them. However, there…

Mastodon

8 min read

The architecture of Mastodon
The architecture of Mastodon
Mastodon

8 min read


Published in

SoftwareMill Tech Blog

·Oct 27, 2022

Protecting state using virtual threads

Java 19 contains a preview of the core component of Project Loom: virtual threads. We can now create threads at will, as we’re no longer (or at least, much less) constrained by their costs in terms of memory and context switch time. Where there are threads, there’s concurrency. So what…

Java

9 min read

Protecting state using virtual threads
Protecting state using virtual threads
Java

9 min read


Published in

SoftwareMill Tech Blog

·Oct 19, 2022

Trying out Unison, part 3: effects through abilities | SoftwareMill

In the previous articles on Unison, we’ve introduced Unison’s “big idea”: content-addressed code and explored how this impacts code organisation and dependency management. But that’s not everything that Unison has to offer. Its effect system is equally interesting and worth exploring in detail. Effect systems aim to add some structure…

Functional Programming

9 min read

Trying out Unison, part 3: effects through abilities
Trying out Unison, part 3: effects through abilities
Functional Programming

9 min read

Adam Warski

Adam Warski

2.3K Followers

Software engineer, Functional Programming and Scala enthusiast, SoftwareMill co-founder

Following
  • Maria Kucharczyk

    Maria Kucharczyk

  • Michał Matłoka

    Michał Matłoka

  • Krzysztof Atłasik

    Krzysztof Atłasik

  • Mikołaj Koziarkiewicz

    Mikołaj Koziarkiewicz

  • Maciej Adamiak

    Maciej Adamiak

See all (43)

Help

Status

About

Careers

Blog

Privacy

Terms

Text to speech

Teams