My experience with the Zig programming language
A few months ago I got trapped into the Zig hype and decided to give it a try because I found its promised C interoperability and its efficiency very appealing. And they didn't lie!
A few months ago I got trapped into the Zig hype and decided to give it a try because I found its promised C interoperability and its efficiency very appealing. And they didn't lie!
This blog engine started as a Golang self-learning exercise that evolved to something useful for me. One of my requirements was to not rely on any local database, to keep the blog deployment simple and cheap. This meant that, if I wanted to provide a comments section, I would need to rely on an external service provider.
In a previous blog post, titled Performance comparison of Go functional stream libraries, we compared the performance and features of several Go functional stream libraries. Since then, the Go standard library has added the iter package, which defines a foundation for iterators, as well as many other packages allowing to manipulate slices and maps in a functional style.
The Pipes library allows you to create modular applications where isolated nodes can be dynamically instantiated and connected for extracting, transforming, and loading (ETL) data from/to diverse sources and destination. This library has been built after years of experience on developing monitoring agents (it actually powers Grafana Beyla), but it is not restricted only to monitoring.
Sometimes I can see small peaks of visits to this blog, especially when a post reaches sites like e.g. Reddit or HackerNews. But the extra amount of load never spends a significant amount of server resources. Thinking about that, a question came to my mind: how many requests/second would my blog be able to dispatch with decent response times?
With the arrival of Generics to Go 1.18, a new programming model has arrived to Go: functional stream processing. This post evaluates some current libraries providing such functionality, and compares the achieved performance in single-thread streams.
In 2017, I started to code the engine that runs this blog as a learning exercise for the Go programming language, following the famous Writing Web Applications official tutorial. That means that the quality of some parts of the code of this blog was poor, making it difficult to understand (even for myself) and difficult to extend with new, useful features that I had in mind to agilize even more my writing/publishing workflows.
After more than 4 years, I implemented HTTPS support for my blog. All the old HTTP links will be redirected to their HTTPS equivalent.
This article shows you the tool that the Kubernetes Go client library provides to keep an updated in-memory snapshot of your cluster resources.
Golang provides the syscall/js experimental package to facilitate
the creation of browser-based applications without requiring any javascript
transpiler; just targeting your official Go compiler to WebAssembly and loading
the artifact in the browser. This blog post is a simple tutorial to allow you
setting up your Go WebAssembly project, as well as some basic functions to
allow your Go code interacting with JavaScript objects and functions.