I’m a Software Engineer at Red Hat. I write about Kubernetes, Tekton, Emacs, Python, Go, and other tech adventures.
Kotlin in a hurry (and why you might actually like it)
Note: This article was partly generated with AI while I was learning Kotlin. It started as personal notes but turned into something readable enough to share. Also, Hugo renders it better than my text editor. Youāve seen Kotlin mentioned in passing. āModern Java,ā they said. āNull-safe,ā they promised. āWorks on the JVM, Android, browser, fridge, whatever,ā they muttered. Hereās the deal: weāll learn Kotlin quickly and directly. No corporate slides, no Android Studio screenshots, no JetBrains marketing. Just the language, the essentials, and a bit of personality to keep you interested. ...
Trying to workaround the pull_request_target issue in GitHub Actions with Pipelines as Code
GitHubās pull_request_target event presents a significant security challenge due to its access to the pull request within the target repositoryās context. This can expose sensitive secrets to untrusted users submitting pull requests. For projects like Pipelines-as-Code (PAC), where interaction with multiple upstream providers (Bitbucket, GitLab, GitHub) is essential, this risk is amplified. Access to repository secrets is vital for E2E testing across these platforms, yet arbitrary pull requests triggering secret-laden workflows is unacceptable. ...
Making AI useful to me with an AI spellchecker
I havenāt fully jumped on the AI hype train, but Iāve kept an eye on the evolving technologies of the past two decades. It used to be that Cloud was the buzzword, then Containers, and maybe blockchain (never got into this one), and now AI. At first, AI felt like a nice gimmickādiscussing things with a chatbot felt a bit like doing a Google search but with a conversational twist. The problem with chatbots was that funny feeling youād get when it seemed like they were just making things up. ...
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. ...
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. ...
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. ...
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: š vi file/to/add/debug.sh š¹ git commit -a "debug ignore" 𫸠git push š [watch logs failures] ā»ļø [repeat] š [swear] 𤦠[hope that things start to work but no it's just another random timeout] š [distress] I hate this loop; itās time-consuming, stupid, and wastes resources and energy for the planet and everyone. ...
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. ...
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. ...
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. ...