In an earlier post about giving up Kubernetes, I wrote that my server is a plain old virtual machine pet. While this works pretty well for a static web server use case, I wanted to explore ways how to automate this blog.
This is a story about how I failed. I am writing this …
In an earlier post about sumlint I wrote about a linter that helps with exhaustive checks of type switches for interfaces with a particular naming pattern.
After some time, I realized that this is essentially how protobuf’s oneof is implemented by protoc and protoc-gen-go. …
A sum type (also known as enum / tagged union / one of / disjoint union) allows a type to be exactly one of several fixed alternatives. Functional languages treat this as a first-class concept with pattern matching and exhaustive checking. Go offers almost everything, but does …
This is my personal log detailing how I updated the blog to support the latest version of Hugo.
I rarely write content here. Perhaps I should work on making writing a habit. The blog itself does uses hugo to generate the HTML from Markdown input. This works well. However. Hugo is …
In the Lazy Neovim Configuration I wrote a bit about the neovim configuration I use. While most of my configuration has not changed, I learned about a new completion plugin blink.cmp. It got recommended by kulala-ls and got recently introduced in a kickstart.nvim.
The …
A few months ago I changed my neovim configuration and started using the Lazy package manager. The thing is that Lazy is fantastic at installing plugins. LSP, neotest, lazydev, telescope and all the goodies from the wonderful neovim community are easy to install and add.
So it is …
As Go 1.23 reaches Release Candidate status the previous rangefunc experiment has been stabilized and iterators are a part of a compiler and a standard library.
The iter package provides common type definitions. The slices package has several functions that work with iterators …
Recently I was playing with Kubernetes to power my tiny blog. I am back on a Virtual Machine powered by openSUSE Leap.
The trigger The xz backdoor meant that I immediately nuked the server from the Internet. While MicroOS itself uses SELinux .. the Kubernetes is known for running …
I was a vim user for a while. The :wq, "+P, y, g, gg, =g and all the cryptic shortcuts invented ten years before I was born… They are just hard wired into my brain.
A while ago I decided to use neovim. I was most impressed the fact that neovim turned out to be a healthy, …
Go has always been a simple language from its inception. Perhaps too simple. I personally think of Go as a (successful) MVP of a programming language. With garbage collector, channels and goroutines.
This simplicity is the reason why many developers, myself included, love Go. And …
When I moved my blog to self hosted virtual machine, I later realised that the content itself was still calling external services for web fonts and css and a javascript.
It makes no sense to move from Microsoft owned Github Pages to self-hosted and force users to visit Google, …
I like the Go built-in support for testing, especially table-driven ones. At the same time I always have a problem with how to structure the test properly. It is easy to write something, but it is hard to read, adapt or improve the test in the future.
Ruby developers know their …