My handcrafted blog

Written from scratch in Go because I'm too lazy to read the Hugo docs.

An introduction to Go Kubernetes' informers

This article shows you the tool that the Kubernetes Go client library provides to keep an updated in-memory snapshot of your cluster resources.

Go and WebAssembly (I): interacting with your browser JS API

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.

KAConf: Kick-Ass Configuration system for your java applications (Tutorial)

This blog post is a step-by-step guide that shows you the basic usage of KAConf, an Annotation-based configuration system inspired in the wonderful Spring Boot, but simpler, lighter, not so magic, and independent of any large framework, with no transitive dependencies.

Enabling Java Reflection on GraalVM Ahead-of-Time compiler

In my previous blog post I evaluated the feasibility of Java for lightweight system programming thanks to the GraalVM native image generation tool. Despite the initial results look promising, I felt disappointed when they pointed me out that GraalVM does not support reflection by default (which IMHO is a wonderful and powerful tool to enhance the expressiveness of our software and to reduce boilerplate). However, you can actually configure the ahead-of-time compiler to incorporate a user-provided reflection metadata.

Java JIT vs Java AOT vs Go for small, short-lived processes

There is still a common belief about Java being slow (especially during the startup) and memory-consuming, making it not being the first option for ephemeral service instances, like containers. This blog post pretends to put some light on those assertions, quantifying the impact of a last-generation JVM in a simple, single-threaded, application. We compare the impact of the JVM measuring the execution time and memory spent of a Java QuickSort implementation, comparing it with the execution of a native image generated with the modern GraalVM Ahead-Of-Time (AOT) compiler and the same QuickSort implementation in Go.

Code syntax highlighting available!

After almost two years without updating this blog, I have changed the Markdown processor from Blackfriday to Goldmark, which includes an extension to highlight the code syntax according to the Alec Thomas' Chroma engine and styles.

Go functions: returning structs vs pointers

Despite copying a struct with several fields is slower than copying a pointer to the same struct, returning a struct value may be faster than returning a pointer if we consider escape analysis particularities.

Some instructions on using this blog

This post briefly explains how the blog is organized, and how to create new posts and templates.

Playing around with some markdown contents


First post!!

This is the first post of my great blog.