Mendhak / Code
Articles, information, and tutorials on development, programming, technology, science.
Linux / UnixDevOps / SRE / infrastructureDev tools / editors / IDEs
- Posts
- 93 from 1 Apr 2018 to 16 Sep 2026
- Posting
- monthly (11 in the last year)
- Kind
- personal blog
- Feed
- https://code.mendhak.com/feed.xml
2026 8
- Routing only a few domains over a VPN
- Image rendering in the terminal to aid with descriptive prose
- A homepage for the terminal
- Privacy is not a soundbite
- Undervolt your GPU for better performance and longevity
- ON1 Photo RAW on Linux
- How do terminal progress bars actually work?
- We should probably start taking backups of Stack Overflow
2025 12
- Run your development environments in isolation with Docker and CUDA
- How to connect to internal AWS resources from GitHub Actions
- Running Windows apps natively in Linux with Docker
- Talking to a local LLM in the Firefox sidebar
- Managing multiple SSH keys for multiple GitHub organisations in a simple way
- Developing personal Python apps for Android's Linux environment
- Using Gemini CLI as an adhoc commandline question answerer
- edit is a terminal text editor that doesn't make me think
- There is a dearth of automatic infinite scroll mice
- My brief attempt at learning about Software Defined Radio on Ubuntu
- A CI/CD friendly Dockerfile for `uv` based Python projects
- It's OK to hardcode feature flags
2024 13
- Compose keys are the nicest way of typing special characters
- New DNS standard could soon lead to useful error messages in browsers
- Modern artifact signing with Cosign, what works and what hurts
- Syncing the login wallpaper with the desktop wallpaper on Ubuntu
- Setting a static IP address in Ubuntu 24.04 using `netplan`
- What does a reverse shell actually look like?
- My most useful network troubleshooting commands and tools
- Adding all AWS service certificate authorities to your trust store
- Lessons learned in moving on from Lightroom
- Enhancing Kobo with text-to-image generation and simple explanations
- Use KeePassXC to sign your git commits
- The userscript that kept me fed
- Automatically hyperlinking the selected text when pasting a URL
2023 12
- GraphQL's poor developer experience
- Hands on introduction to LLM programming for developers
- LLM output is malicious user input
- Using a local LLM to Automate an Android device
- `?`, a simple CLI lookup tool
- Use threat modelling to choose a password manager
- .NET's underrated configuration feature
- The unpleasant hackiness of CSS dark mode toggles
- My Kobo Customizations
- Wildcard certificates are not always a security risk
- I had fun learning about Linux localization and fonts
- Escaping Jekyll, and moving to Eleventy
2022 12
- Appreciating F-Droid as an app developer
- Bringing TLS 1.3 to older Android devices
- How to run any Docker container's traffic through Wireguard or OpenVPN
- The simplest way to get started with Stable Diffusion via CLI on Ubuntu
- Syncing your Github status with your currently playing Steam game
- I wrote to the address in the GPLv2 license notice and received the GPLv3 license
- My ebook reading setup
- 'Zero Trust' security is a poor choice of words
- Tool to find Steam trading card sets in common with another user
- Repurposing Caps Lock into something useful
- In praise of opinionated frameworks
- A simple and effective Bash prompt for developers
2021 8
- How quantum computers break our security, and what's being done about it
- Smashtest Tutorial
- How to use KeepassXC to serve SSH keys to WSL2 and Ubuntu
- Host your API Gateway documentation in API Gateway
- Raspberry Pi: Simple Waveshare e-paper dashboard with weather and calendar
- Why the F**k won't you build?
- Getting a Github Action to run randomly
- Mentally calculate the day of the week, given a date in the current year
2020 13
- Standard paper sizes are an elegant example of simple maths
- A hello world example using a Docker image in AWS Lambda
- OpenStreetMap tip: tall buildings
- Setting up an Auth0 secured Angular application with dynamic runtime loaded configuration
- Privacy - running untrusted apps safely using the Shelter app
- Grub Reboot Picker - boot into other OSes and BIOS/UEFI from system tray
- Setting up a WSL1 dev environment from the command line
- How to set the title of a tab in terminal
- How to use KeepassXC to serve SSH keys to WSL1 and Ubuntu
- Preparing a Raspberry Pi Zero with WiFi and SSH
- Running a Selenium Grid cheaply with Fargate Spot containers in AWS ECS
- Securely wipe an SSD with its built in commands
- Custom TLS certificate validation for Android applications
2019 13
- Getting NextDNS and NordVPN to work together on Android
- Using Gradle to PGP sign and checksum files
- My OpenStreetMap workflow: mapping the village of Marmari, Evia
- Don't install npm packages globally
- Issuing multiple requests with `curl`
- Short guide to good commit messages
- MS Teams Operator for Apache Airflow
- How to use KeeAgent with WSL and Ubuntu
- Using KeePass to serve SSH keys
- Updating another user's pull request to your Github repository
- AngularJS - Perceived Performance
- Colored and folded output for Gradle tests
- An `https` echo Docker container for web debugging