Advanced usage of Emacs isearch

Introduction It has been a long time since I have blogged about Emacs. I still enjoy using it as when I started from day one (around 1998). I did made some changes I have now moved out of the Emacs keybindings toward using the evil keybinding and have become proficient using Neovim (for terminal editing) or Vscode (for the debugger) but Emacs is where my “home” is. Today I’d like to talk about Isearch, I don’t think we realise how powerful isearch is compared to other editors, the experience out of the box is very intuitive and powerful and as anything with Emacs you can customize it exactly the way you want....

March 1, 2024

Trusting self signed certificates with Kubernetes Ingress Controller

I have a very complicated development environment, which spins up a local Kubernetes cluster on Kind and then deploys a bunch of services to it. Some of the services gets accessed by the browser and until late I was deploying everything on localhost which so far did not cause any issues, since the browser are good at trusting localhost. But since my laptop was getting slower and slower and I had a new raspberry pi 5 unused with a SSD, I decided to made it my local Kubernetes cluster....

January 26, 2024

Gosmee Webhook Forwarder and Relayer

I use “Webhook” every day; it’s a simple mechanism used by most web applications to send payloads on events. It’s great and all, but since it needs to send you data, it has to be exposed to the internet. And that’s where it gets tricky. If you are in development mode and want to test the webhook, you can’t just expose your local machine to the internet; you need some sort of solution for that....

December 20, 2023

How to debug GitHub Workflow with Tmate

GitHub workflow is great but can be a bit of a black box when things go wrong. When the YAML cannot be validated, GitHub offers a handy feature to debug the workflow with additional logging. But sometimes your deployment or tests, or whatever you are doing in your workflow, fail when running on CI but not locally, and you are bound to end up in the git push/commit Outer-Loop hell:...

December 20, 2023

qmk space cadet plus

I enjoy the space cadet feature of QMK : https://docs.qmk.fm/#/feature_space_cadet The feature is simple but yet powerful, when you hit one press you send a parenthese open or close form the other side and if you hold it you have shift. I am not sure what happened to my config, but I could not get it to work with the default macros offered SC_LSPO and SC_RSPO. I dug into the process_record_user() function hook to replicate the feature and add one other ’thing’ where if you press another shift at the same time of the keypress it will do a right bracket....

April 25, 2023

Selecting files in ZSH With fzf and exa

Sometime the tiniest optimization makes a huge difference. When I am not using Emacs and dired I usually just use the shell with zsh to do all my file management. This is fine and great but sometime when I need to select multiple files with different names, I would have to do a lot of tabs and selection or copy and paste to select properly the list of files I want to do operations on....

January 11, 2023

shell completions with go cobra library

Every time I press the [TAB] key in my shell, it bothers me that nothing happens. I’m not very smart, so I often press the [TAB] key multiple times, hoping that maybe the seventh time will magically produce the completion that I expect. However, magic is not a computer function, and if a user or command line interface (CLI) author has not provided a completion function, nothing will ever happen....

November 22, 2022

Snazy - a snazzy json log viewer

I have been meaning to write an article about tools that I have developed lately to make it easier for my day to day life work. Being a so called “Kubernetes cloud native developer” (don’t laugh at the title because I do) I have to watch a log of controller logs. Most controller logs output in JSON format which is a nice tool for computers but not straightforward to parse to the eyes of the mere mortals....

November 5, 2022

Error chaining with Rust and Go

I was talking with a colleague about Rust and we were wondering (since we are both learning the language) how error handling compares to Go. Chaining error in Go Go’s best practice when you want to chain multiple errors is to “wrap” them. For example let’s say you have this function returning an error: func do_something() err { value := "value" if value != "expected" { return fmt.Errorf("this was not expected") } } when we call the function do_something() from another function, we want to add context to it and to do so we will wrap it around it with the “%w” directive:...

May 20, 2022

Generating Preview Environments with Tekton

On Pipelines as Code we started to get a nice documentation website on : https://pipelinesascode.com The website is statically generated with Hugo and hosted on CloudFares Pages using the markdown files from the repository. So far that’s a pretty standard stack, but what we wanted is to be able to get preview URLS like on Netlify or other CIs There is a nice check box, that says “Generate Preview URL on Pull Request” which seems to do what we want but it doesn’t....

April 7, 2022