Longer posts containing deep dives into more complex topics.
Pair programming is the work mode in development in which two people collaborate on the same task in split, but frequently reversed, roles (one thinking high level, the other implementing the changes). Compared to solo programming, pair programming may have multiple positive effects, for example, on code quality. Utilizing pairing correctly, therefore, is an important—but non-trivial—aspect of coordination within highly effective development teams. With the emergence of capable generative AI coding assistants in the last few years, pairing between human programmer and an AI coding assistant (sometimes called pAIr programming) has also developed into an established pattern. Since I personally enjoy traditional human/human pair programming but also use and see the benefits of AI coding assistants, I was curious about what the literature has to say on the pros and cons of both work modes. Here is what I found out.
I’m currently migrating my website from Jekyll to AstroJS and the experience has been really positive so far.
AstroJS, in particular, offers quite a lot of flexibility for writing content in Markdown format. For example, by supporting JSX components (via the MDX extension) and, for more general purposes, by supporting Remark and Rehype plugins.
This post gives a short introduction on how to extend Astro’s Markdown processing with Remark and Rehype plugins. You will also find a practical example of how to add Mermaid diagram processing with a Rehype plugin.
NuShell is a very modern shell and shell language that draws some heavy inspiration from Rust and that I really enjoy writing small programs and glue code in (especially for CI/CD pipelines). In contrast to Rust, it doesn’t have a Result type to model errors in code. Thanks to language features like pattern matching, however, we may easily add one.
Containerization is an excellent way to package, distribute, and version developer environments. There are quite a lot of tools that simplify ramping up developer environments using containers, like Dev Container, DevFile, and GitPod. DevSpace, the topic of this post, also helps setting up containerized developer environments, but it has the advantage of deploying to Kubernetes, providing two-way sync between host and remote container, as well as being able to inject an SSH server for remote access.
In my neverending quest for the perfect development set-up, I’ve recently tried a couple of improvements for my hitherto standard command line tooling (ZSH + iTerm2). While ZSH has—for me—stood the test of time (and I don’t feel the need to try out another shell yet), there is, in my opinion, always room for improvement on the terminal emulator side. So, here’s a quick guide on how to use my new weapon of choice, Alacritty.
Brave is a free, open-source, Chromium-based web browser that has a strong focus on privacy. Brave also has the option to run progressive web apps (PWA) as standalone applications. This may be useful if you prefer to run some apps in the browser, but still want to have the benefit of launching and switching to the app like a fully native app. Some websites unfortunately don’t declare themselves properly as progressive web applications or simply are not PWA-enabled yet. Brave has the nice feature that in spite of this, you can install websites like these as a PWA. The workflow to do this is a bit hidden in plain sight, however, so here’s a quick tutorial on how to do it.
The Kubernetes API is changing all the time. With these changes come deprecations and eventual removals of parts of the API. To be able to keep an up-to-date Kubernetes cluster version, we have to identify deprecated APIs and update them. This may become tedious in larger clusters with hundreds of resources but tools like pluto
can help.
Today we’re looking into the potential future of JavaScript by reading up on the types as comments proposal that seeks to introduce type information as part of the core JavaScript language.
Prowler is a security auditing tool for AWS that helps us catch security defects such as credentials stored in plain text or S3 buckets that are publically accessible by accident. While Prowler is generally a very useful technology it sometimes also reports false positives. Thankfully, Prowler also comes with a whitelisting functionality that allows us to ignore certain resources.