Miblog

Recent Post

Hexagonal gonix logo showing a Go gopher, the $ (a shell) character, and underscore for a unix shell prompt. There is smaller Go gopher mascot on top of the prompt..

Gonix: Go All the Way Down

In gonix: unix from userspace and gonix: the sixth element, I introduced the full user space Unix scripting system implemented in Go. However, shell scripting is not only about running compiled binaries. It is also about writing new functions that can be called from the scripts. …

Hexagonal gonix logo showing a Go gopher merged with the Confused Tux penguin, creating a hybrid Go and Linux mascot. A dollar sign and underscore appear beside it.

Gonix: The Sixth Element

Unix is not just pipes and text streams. This is why I introduced a kernel like element into gonix: unix from userspace. To allow the system become close to the real Unix shell. Beyond running cat | wc -l user will naturally ask How many processes are running? What are their name …

cover image

Gonix: Unix From Userspace

A while back, I watched the video where Dennis Ritchie was showing Unix command line. And I though to myself. How hard would it be to replicate the unix pipe in Go? Given the fact I began experimenting 4 years ago, it might be tempting to say yes. It is hard! However, …

cover image

Going Dark

While writing about the responsive design of ByteKit,I wanted to demonstrate the fact it has both light and a dark themes. At this exact moment I realised that this blog itself has no dark theme. When I setup to setup Hugo for it I simply used an existing theme named hestia-pure. …

cover image

Bytekit Responsive

Bytekit: jq, awk and a responsive design I released version 0.3.0 of a bytekit.app, which is a privacy oriented AGPLv3 Web application for developers that I had been working on. There are a few new features to highlight: AWK, which is based on the impressive goawk package from …

cover image

Bytekit: Generating Passwords

In my recent post introducing bytekit, I described a tiny little PWA designed to help me and other developers. Here I am going to introduce a new feature: generating passwords and secrets. It may sound odd to use an online tool for something as sensitive as password. The good …

cover image

Neovim as a Java Ide with Lombok support

I got recently switched to working on a Java codebase. This is a tutorial on how to setup neovim as a proper Java IDE, including a lombok support. Introduction After working with computers for almost two decades, vim’s modal editing is wired into my brain and a muscle …

cover image

Introducing Bytekit.app: Privacy Oriented Web App for developers

I recently deployed my tiny Web application bytekit.app. This is tool for developers doing stuff like JWT, base64, hashes and so on. I wanted something easy to use, privacy-oriented, and fast. Bytekit is written in Go. That might sound an odd choice for a browser app, but Go …

Go logo, the Gopher, surrounded by { }

UnmarshalText in Go

I must admit that I tend to overlook the interfaces in the encoding package. Since I typically work with JSON or Yaml, so I tend to care more about methods like UnmarshalJSON. However, today I learned the trick of using TextUnmarshaler when I needed to use a custom type inside …

failed runs at https://codeberg.org/vyskocilm/miblog/actions

Ci Setup Which Never Worked

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 …

cover image

Oneoflint: Exhaustive Lint for Proto Files

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. …

cover image

Sumlint: Having sum types in 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 …