Viktor Stanchev

Founding Engineer at Anchorage Digital

I love feedback! Email me your ideas.

tempts: a type-safe Temporal Go SDK wrapper

Are you using Temporal and writing workflows in Go using their Go SDK? If so, I have something for you. Otherwise feel free to skip this blog post. I created a type-safe wrapper around the Temporal Go SDK called tempts. It helps you avoid many common mistakes when working with Temporal workflows. The native SDK is powerful and flexible. Although this wrapper sacrifices some power and flexibility, it offers safety through its opinionated design....

February 16, 2024

Why I Wrote Yet Another Data Loader in Go

There are three other packages already that implement data loaders in go, but after using them for a while, I wasn’t happy and decided to write my own. But why? Let’s start with “what’s a data loader?” It’s a pattern popularized by facebook in their dataloader javascript package. A data loader synchronizes multiple calls to fetch the same type of data (let’s say a user) by different keys (user IDs) and blocks the callers until “enough” of them have made a request....

December 6, 2023

Exploring HTMX and the Revival of Hypermedia

I recently taught myself HTMX, and I’m excited to see its growth because it revives an old idea that the world has forgotten: hypermedia.. Hypermedia was behind the original growth of the internet and, through HTMX it might be able to bring a new level of efficiency and productivity to a world tired of JavaScript single page applications and 10MB web pages. It’s promoted as a way to make back-end developers more productive by learning a little bit of front-end....

October 14, 2023

A Little Code is Better Than a Little Infrastructure

I just published a blog post on the Anchorage Digital Engineering blog on the somewhat controversial topic of using code vs infrastructure to solve problems. You can learn where I stand by reading the original article here!

September 22, 2023

slogevent Go package

While attempting to extend the slog package in many different ways, I kept coming back to this idea that, at some point, I have to write a slog.Handler. I don’t have a need for high performance, and I just need an easy way to extend my logger to do additional things at the same time as logging. That’s why I created slogevent. This Go package makes extending slog as simple as writing a function that handles log entries....

August 15, 2023

Four ways to extend the go 1.21 slog Logger

In my previous blog post on the Anchorage Digital blog, I wrote about logging features I’d love to see built around the new slog package coming in Go 1.21. I heard from several people that they want to learn more about how exactly to do this. To answer these questions, I built out 6 examples of how to extend slog, showing 4 different strategies. I used some of the use-cases from the last blog post....

August 6, 2023

Getting the most out of the Go 1.21 slog package

Go 1.21 will be released with many improvements that I appreciate, but the one that stands out to me the most is the addition of the log/slog package. It serves as a great foundation for a logging system, but there’s a lot more to logging than what it offers out of the box. I published a blog post on the Anchorage Digital Blog that points out some logging features that can and should be added around this package....

July 25, 2023

Practical Policy Enforcement with CUE

I have been using CUE for over 2 years and I’ve found it to be incredibly good at defining policies. CUE is an elegant configuration language because of the guarantees that it can express. It has many additional uses such as applying policies on existing configurations, whether they are written in CUE or in another format like JSON or YAML. Let’s take a look at some easy and practical policy enforcement applications for CUE for Kubernetes, OpenAPI and Terraform....

June 6, 2023