Miblog

Recent Post

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 …

hugo logo with a wrench

Updating Hugo Templates

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 …

screenshot of blink.cmp suggesting emoji

Blink.cmp

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 …