RSSAmplifier

Blog

vigoo's software development blog

blog.vigoo.devRSS feed ↗61 posts

Latest posts

Golem 1.5 features - Part 17: Semantic retry policies

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 16: Quotas

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 15: MoonBit

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 14: OpenTelemetry

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 13: Per-agent configuration

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 12: REPL

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 11: Bridge libraries

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 10: WebSocket client

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 9: Agent skills

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 8: Template simplifications and automatic updates

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 7: Configuration and Secrets

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 6: User-defined snapshotting

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 5: Scala support

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 4: Node.js compatibility

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 3: MCP

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 2: Webhooks

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem 1.5 features - Part 1: Code-first routes

Introduction I am writing a series of short posts showcasing the new features of Golem 1.5 , to be released at the end of April, 2026. The episodes of this series will be short and assume the reader knows what Golem is. Check my other Golem-related posts for more information! Parts released so far: Part 1: Code-first routes Part 2: Webhooks Part 3: MCP Part 4: Node.js compatibility Part 5: Scala…

Golem as a Coding Agent engine

Introduction Coding agents became the new way of writing software for many of us; even though I was skeptical about this for a long time, in the past few months all my code was written by agents, with productivity I had never experienced before. The whole ecosystem is changing extremely fast, and people are trying to figure out what the best set of tools and workflows are to work efficiently in…

Agent patterns in Golem

Golem is an agent-native platform that provides high level of fault-tolerance and exactly-once (or in some cases, at-least once) semantics automatically without requiring to write any code for persisting and recovering state. We wrote several blog posts, demos and live coding sessions showing how this looks like. Yesterday I've posted about writing a Golem application in Rust , and a week…

Rust agents in Golem 1.4

The previous version of Golem, 1.3 made a big leap from earlier versions by introducing code-first agents . We could now write stateful, persistent entities called agents by simply defining TypeScript classes with some annotations, while previously it required learning the WebAssembly interface definition language and using that to first define our application's public interface, then figure…

Golem 1.3's code-first TypeScript agents

Introduction In the previous post about Golem 1.3 I explained that the new release comes with a new JavaScript engine. This engine fixes some important bugs and allows us to move faster and provide a better JS/TS experience - but it comes with a price. One of the tradeoffs was that building an actual WebAssembly component containing this engine requires the Rust toolchain - we are generating…

Golem 1.3's new JavaScript engine

As we are rapidly approaching the release data for Golem 1.3, a major update, I'm going to publish a series of small posts talking about some of the technical details of this new release. In this first one, let's talk about the new JavaScript engine . JavaScript support in previous versions In previous Golem versions we tried to support JavaScript (and TypeScript) using the "official"…

[Video] Missing Testing Features in Rust @ LambdaConf 2025

My talk at LambdaConf 2025 about my Rust test framework test-r .

LambdaConf 2024-2025 - one year of Golem

I'm on the last LambdaConf at the moment, and exactly a year ago I gave a talk about Golem on LambdaConf 2024 . Someone asked me what happened with Golem since then? So many things I could not properly answer. So here is a short summary of one year amount of Golem development, from LambdaConf 2024 to LambdaConf 2025. We had a Golem Hackathon on last LambdaConf, and had a fresh release of…

[Video] Golem powered by WebAssembly @ Wasm I/O 2025

My talk at Wasm I/O 2025 explaining how Golem is built on WebAssembly and the Component Model.

Durable Execution is not just for failures

Introduction When talking about Golem or other durable execution engines the most important property we are always pointing out is that by making the application durable , it can automatically survive various failure scenarios. In case of a transient error, or some other external event such as updating or restarting the underlying servers durable programs can survive by seamlessly continuing their…

Using MoonBit with Golem Cloud

Introduction MoonBit , a new programming language has been open sourced a few weeks ago - see this blog post . MoonBit is an exciting modern programming language that natively supports WebAssembly, including the component model - this makes it a perfect fit for writing applications for Golem Cloud . In this post I'm exploring the current state of MoonBit and whether it is ready for writing…

[Video] Golem and the WASM Component Model @ LambdaConf 2024

My talk at LambdaConf 2024 explaining how Golem takes advantage of the WebAssembly Component Model.

Zig and the WASM Component Model

Golem always considered Zig a supported language, but until now the only documented way to use it was to compile a program with a single main function into a core WebAssembly module and then wrap that as a component that can be uploaded to Golem for execution. This is very limiting, as in order to take full advantage of Golem (and any other part of the evolving WASM Component Model ecosystem ) a…

Golem's Rust transaction API

Introduction A few weeks ago we have added a new set of host functions to Golem , which allow programs running on this platform to control some of the persistency and transactional behavior of the executor. You can learn about these low-level functions on the corresponding learn page . These exported functions allow a lot of control but they are very low level, and definitely not pleasant to use…

Worker to Worker communication in Golem

This article was originally posted at the Golem Cloud Blog Golem Cloud's first developer preview has been unveiled in August , and just a month ago, we released an open-source version of Golem . Workers, the fundamental primitive in Golem, expose a typed interface that can be invoked through the REST API or the command line tools, but until today, calling a worker from another worker was…

desert part 1 - features

Introduction This is the first part of a series of blog posts about my serialization library, desert . I also gave an overview of this library on Functional Scala 2022 - you can check the talk on YouTube if interested . In this post I'm going to give an overview of the features this serialization library provides, and then going to dive into the details of how it supports evolving data types.…

[Video] Beyond OpenAPI @ Functional Scala 2023

My talk at Functional Scala 2023 about my experience with generating client libraries from OpenAPI specifications, and an alternative code-first approach using ZIO Http .

Type class derivation with ZIO Schema

Introduction Making the compiler to automatically derive implementations of a type class for your custom algebraic data types is a common technique in programming languages. Haskell, for example, has built-in syntax for it: data Literal = StringLit String | BoolLit Bool deriving ( Show ) and Rust is using macros instantiated by annotations to do the same: #[deriving( Debug )] enum Literal {…

Generating a Rust client library for ZIO Http endpoints

We at Golem Cloud built our first developer preview on top of the ZIO ecosystem, including ZIO Http for defining and implementing our server's REST API. By using ZIO Http we immediately had the ability to call our endpoints using endpoint client s, which allowed us to develop the first version of Golem's CLI tool very rapidly. Although very convenient for development, using a CLI tool…

[Video] Introducing ZIO Flow @ ZIO World 2023

My short talk at ZIO World 2023 about the zio-flow library .

[Video] Binary Serialization Of Evolving Data Types @ Functional Scala 2022

My talk at Functional Scala 2022 about the binary serialization library desert .

ZIO Kafka with transactions - a debugging story

Introduction With one of our clients, we were working on a chain of services responsible for processing some logs coming from a Kafka topic, partition them by some properties like user and date, infer and aggregate the log schema and eventually store the partitioned data in a different format. The details of this use case are not important for understanding this post, in which I'm going to…

[Video] ZIO Parser @ ZIO World 2022

My talk at ZIO World 2022 introducing ZIO Parser

[Video] Generating Libraries @ Functional Scala 2021

My talk at Functional Scala 2021 about generating libraries in Scala:

Writing kubectl plugins with ZIO K8s

Originally posted at the Ziverge blog . Andrea Peruffo recently published a blog post on the Lightbend blog about how they migrated a kubectl plugin from Golang to Scala using the Fabric8 Kubernetes client and a few Scala libraries. This is a perfect use case for the zio-k8s library announced two weeks ago , so we decided to write this post demonstrating how to implement the same example using the…

The Coralogix Operator: A Tale of ZIO and Kubernetes

My blog post published at the Coralogix blog about using zio-k8s for writing operators.

ZIO-AWS with ZIO Query

A few years ago I wrote a post about how I refactored one of our internal tools at Prezi . This command line tool was able to discover a set of AWS resources and present them in a nice human readable way. The primary motivation at that time was to introduce circuit breaking to survive AWS API rate limits. I have recently published a set of libraries, zio-aws , and thought it would be interesting…

Code generation in ZIO-AWS

I have recently published a set of libraries, zio-aws , aiming to provide a better interface for working with AWS services from ZIO applications. For more information about how the ZIO interface works and how to get started with these libraries, read the repository's README. In this post, I will focus on how these libraries are generated from the schema provided by the AWS Java SDK v2 .…

prox part 4 - simplified redesign

Blog post series Part 1 - type level programming Part 2 - akka streams with cats effect Part 3 - effect abstraction and ZIO Part 4 - simplified redesign Intro In Part 1 I described how the advanced type level programming techniques can be used to describe the execution of system processes. It was both a good playground to experiment with these and the result has been proven useful as we started to…

prox part 3 - effect abstraction and ZIO

Blog post series Part 1 - type level programming Part 2 - akka streams with cats effect Part 3 - effect abstraction and ZIO Part 4 - simplified redesign Intro The first post introduced the prox library and demonstrated the advanced type level programming techniques it uses. Then in the second part of this series we experimented with replacing the streaming library from fs2 to Akka Streams . In…

prox part 2 - akka streams with cats effect

Blog post series Part 1 - type level programming Part 2 - akka streams with cats effect Part 3 - effect abstraction and ZIO Part 4 - simplified redesign Intro In the previous post we have seen how prox applies advanced type level programming techniques to express executing external system processes. The input and output of these processes can be connected to streams . The current version of prox…

prox part 1 - type level programming

Blog post series Part 1 - type level programming Part 2 - akka streams with cats effect Part 3 - effect abstraction and ZIO Part 4 - simplified redesign Intro I started writing prox at the end of 2017 for two reasons. First, I never liked any of the existing solutions for running external processes and capture their input/output streams. And I just returned from the scala.io conference full…

AWS rate limits vs prezidig

At Prezi , we have an internal tool called prezidig for discovering AWS resources. I like it a lot so I was quite annoyed recently that it always fails with a throttling exception because of our increased use of the AWS API. It made it completely unusable, so I decided to try to fix this. Then I decided to write the story in this blog post, as the steps I had to made to achieve the results I aimed…

Bari with Visual Studio Code

Intro A few weeks ago I discovered Visual Studio Code and started using it for some of my work. (Note: I'm using multiple editors/IDEs all the time, based on the task; Emacs, Sublime, Atom, IntelliJ, VS, etc.) So far Code is my favourite among the set of similar editors, such as Atom. I was pleasently surprised how well it works with its integrated OmniSharp plugin on bari's…