Monospace Mentor logo Monospace Mentor
Courses Community Mentorship Content Contact
Courses Community Mentorship Content Contact

The Monospace Mentor wiki

This is a growing collection of notes I’m curating in my daily work as a CTO and an SRE/DevOps educator. I hope you’ll find them useful!

Common entrypoints

If you’re looking for something specific, use the site search. Otherwise, start with the topics below.

  • System administration
  • Software development
  • DevOps
  • Site reliability engineering
  • Information Technology
  • Computer Science

Browse the wiki

  • 3-2-1 backup rule
  • Accessing Chef node attributes
  • Active Record pattern
  • ActiveController
  • ActiveSupport Notifications
  • ActivityPub
  • Ada
  • Ada development tools
  • Ada on Fedora Linux
  • Ada to C bindings
  • Add man pages to your Ruby CLI
  • Agile software development
  • Algorithms and data structures
  • Analyse inode usage of a filesystem
  • ANSI art
  • Ansible
  • Anti-patterns for distributed systems
  • Apache web server
  • Apps to host yourself
  • Arch Linux
  • Architecture Decision Records
  • Artificial Intelligence
  • Asset precompilation required in Rails dev environment
  • Atomic Linux distribution
  • Attributes of a good runbook
  • Authentication
  • Auto-registering composition in Ruby
  • Auto-releasing a Ruby gem
  • Automation
  • Availability
  • Avoid array node attributes
  • Background jobs
  • Backup
  • Backup Synology NAS configuration
  • Bash
  • Bash tips and tricks
  • BBS software
  • Bloom filter
  • Bluefin
  • Bluefin installation breaks failing to write boot manager
  • Bluetooth
  • Borg backup
  • Borgmatic
  • Bridgetown
  • btrfs
  • Building a Mechanical Keyboard
  • Building command line tools in Ruby
  • Building forms in Rails with Tailwind CSS
  • Building RPM packages
  • Bulletin Board System
  • Bundler
  • Bunny Fonts
  • C programming language
  • Cache invalidation
  • Caching
  • Capybara
  • Change Windows 10 Bluetooth host name
  • Changelog
  • Changing keycodes on the hardware level
  • Chat
  • ChatGPT
  • Chef
  • Chef server API
  • Chezmoi
  • Clean Chef code
  • Clean Code
  • Cloud computing
  • CNCF
  • Code readability
  • Code reusability
  • Coding
  • Command pattern
  • Common Rails gems
  • Communication
  • Community
  • Compiler
  • Computer Science
  • Computer System
  • Computer Systems
  • Computing
  • Computing magazine archives
  • Configuration file formats
  • Configuration management
  • Consul
  • Container Deployment
  • Container operating systems
  • Container Orchestration
  • Container Registry
  • Container Runtime
  • Container toolbox
  • Content delivery network
  • Content management systems
  • Continuous delivery
  • Continuous integration
  • Conventional Commits
  • CP-M
  • Cray
  • Create a VM template in Proxmox
  • Crystal
  • CSS
  • CSS layouts with Flexbox
  • Custom toolbox image
  • Data bag item object
  • Data processing
  • Database
  • Database performance
  • DelayedJob
  • Depend on public cookbook interfaces
  • Dependency Inversion Principle
  • Deploy Jekyll to Kubernetes
  • Deploy Ruby on Rails app on Kubernetes
  • Deploying Podman workloads with Ansible
  • Design anti-patterns
  • Design Pattern
  • Desktop entry spec
  • Desktop environment
  • Desktop Web Applications
  • Devbox
  • Development environment
  • DevOps
  • DevOps automation
  • DevOps software vendors
  • DevOps tools
  • Devpod
  • Diataxis
  • Disable Gnome extension version checks
  • Distributed Systems
  • Distributed systems messaging
  • Distrobox
  • Docker
  • Docker Cmpose
  • Docker Compose
  • Docker credential helper bugfix
  • Docker deployment of Rails applications
  • Docker with Tailscale exit node
  • Document formats
  • Documentation
  • Domain Name System
  • Doom Emacs
  • dotfiles
  • Downsides of Large Memory Models
  • Drupal
  • Drupal caching
  • Dynamic loading of application plugins in Ada
  • Elasticsearch
  • Emacs
  • Emacs keybinds
  • Email
  • Enable fractional scaling in GNOME
  • Engineering standards
  • Environment Variables
  • Ergonomic keyboards
  • Error handling
  • esbuild
  • Extending the Rails console
  • Fedora Silverblue
  • Fedora Silverblue workstation setup
  • Fedora Workstation
  • Fedora Workstation setup
  • FidoNet
  • File format
  • Filesystem
  • Filesystem encryption using eCryptfs
  • Filesystem Hierarchy Standard
  • Filesystem layering in Fedora Silverblue
  • Firefox
  • Fix file dialog windows not opening in Niri
  • Fix geolocation detection on Linux
  • Flatpak
  • Flip a display in GNOME on Wayland
  • Forgejo
  • Forgejo runner setup on Fedora
  • FreePascal
  • Game development
  • Game development in Ruby
  • GDM
  • GDM monitor configuration
  • GenAI policy
  • Generative AI
  • Generative models
  • Getting the current calendar week in Javascript
  • Git
  • GitHub
  • GitHub bots and actions
  • GitLab
  • GitLab CI
  • GitLab token rotation with Linear
  • Globbing in early Unix
  • GNOME
  • GNOME keyring causes issues with SSH and Yubikey
  • Golang
  • Grafana
  • groff
  • GRUB
  • Hanami
  • Hardware
  • HashiCorp
  • Hashing
  • Head of Line blocking
  • Helix
  • Home automation
  • Homeassistant
  • Homebrew
  • Homebrew for Linux
  • Homelab
  • Hotwire
  • How to make Windows use UTC for reading the clock
  • How to safely use after_save in Rails
  • HTTP
  • HTTP caching
  • HTTP optimization with Varnish
  • HTTP-2
  • HTTP-3
  • Hyper key
  • Hypertext
  • Hypervisor
  • i3 Window Manager
  • Immutable desktop operating system
  • Implementing custom Rubocop rules
  • Incident Management
  • Incident report
  • Indentation in vim and neovim
  • Indie Web
  • Information Technology
  • Infrastructure as Code
  • Inode
  • Install 1Password on Fedora Silverblue
  • Install Espanso on Fedora Silverblue
  • Install Sway on Bluefin
  • Install Tailscale on Fedora Silverblue
  • Install the pg gem in a Homebrew environment
  • Installing fonts with yarn
  • Interface Segregation Principle
  • Internet
  • Internet protocols
  • Internet services
  • Interpreter
  • Interrupt
  • IPv4
  • IRC
  • IT infrastructure
  • IT Operations
  • Javascript
  • Javascript bundling in Rails
  • Javascript typewriter effect
  • Jekyll
  • JSON
  • Jupyter notebook for Ruby
  • Kamal
  • KDE
  • Keyboard
  • Keyboard Group-Buys
  • Keyboard keycaps
  • Keyboard layouts
  • Keyboard Lubricants
  • Keyboard vendor
  • Keycaps for mechanical keyboards
  • keyd
  • Kitty
  • Kubernetes
  • Kubernetes backup
  • Kubernetes developer setup
  • Kubernetes monitoring
  • Kubernetes pod
  • Kubernetes Secrets
  • Kustomize
  • Kutt URL Shortener
  • KVM
  • Large Language Model
  • Latency
  • Learning Linux
  • Let's Encrypt
  • Lilypod
  • Linear
  • Linting
  • Linux
  • Linux Container
  • Linux distribution
  • Linux hardware support
  • Linux Kernel
  • Linux package managers
  • Linux Shell
  • Linux system administration
  • Linux workstation setup
  • Liskov Substitution Principle
  • Live streaming
  • Load balancing
  • Loading code at runtime in Ruby
  • LXC
  • Mac fan not spinning up
  • Machine learning
  • macOS
  • macOS development setup
  • macOS tricks
  • Maintainability
  • Maintaining a Ruby gem
  • Making my own Nerd Font
  • Managing external NeoVim tools with Mason
  • Manjaro Linux
  • Manjaro Linux on the Raspberry Pi
  • Manjaro workstation setup
  • Markdown
  • Markdown processing
  • Martin Fowler
  • Mastodon
  • Mastodon administration
  • Mastodon Comments
  • Mastodon development
  • Mastodon instance operations
  • Mastodon Setup
  • Matrix
  • Matrix setup
  • Mechanical keyboard
  • Memory allocation
  • Message bus
  • Messaging system
  • Minio
  • Minix
  • Miryoku
  • Modula
  • Monitoring
  • Monitoring service resource usage using systemd
  • Monorepo
  • Mozilla
  • mpd on Synology
  • My Bridgetown workflow
  • MySQL
  • Nativefier
  • NATS
  • NeoVim
  • NeoVim configuration in Lua
  • NeoVim Language Server Support
  • Netdata
  • Netlify
  • Network
  • Network operations
  • Network protocols
  • NetworkManager
  • Neural network
  • Nextcloud
  • nginx web server
  • ngrok
  • Nim
  • niri Window Manager
  • Nix
  • NixOS
  • Nomad
  • Notifications in Rails
  • Object inheritance
  • Object-oriented design
  • Object-oriented programming
  • Observability
  • OCI Container
  • OCSP
  • OctoDNS
  • Open Source Ada projects
  • Open source maintainership
  • Open source software
  • Open-Closed Principle
  • OpenSearch
  • OpenVMS
  • Operating system
  • Overlay network
  • Owncast
  • Pacman (package manager)
  • Pants build system
  • Pascal
  • PDP-11
  • Perl
  • PHP
  • pi-hole
  • Podman
  • Podmander
  • Portainer
  • PostgreSQL
  • Presenter pattern
  • Processing Markdown frontmatter
  • Programmable configuration file formats
  • Programming language
  • Project management
  • Prometheus
  • Prometheus TLS and Basic Auth
  • Proxmox
  • Proxmox on Hetzner
  • Pull Request
  • Puma web server
  • Python
  • QMK keyboard firmware
  • Quadlet
  • Quoting strings in Ruby
  • RabbitMQ
  • RAID
  • Rails ActiveRecord
  • Rails app documentation
  • Rails asset pipeline
  • Rails browser testing with Cuprite
  • Rails concerns
  • Rails credentials
  • Rails performance at Github
  • Rails routes
  • Rails testing
  • Rails Tips and Tricks
  • Rails URL helpers
  • Raspberry Pi
  • rbenv
  • RC2014
  • Reducing Ruby memory footprint
  • Refactoring
  • Reliability
  • Remap Super key combos in GNOME
  • Remind calendar
  • REPL
  • Require password for Windows UAC
  • Resolving DNS for local TLD in Ubuntu
  • Resources for learning Ruby
  • Retries
  • Retrocomputing
  • revealJS
  • RevealJS presentations with Jekyll
  • Rewriting git history
  • RFC
  • Robust shell scripting
  • Root Cause Analysis
  • rpm-ostree
  • RSpec
  • RSX-11
  • RSX-11 - Installing RPM package manager
  • RSX-11 - Programming BASIC PLUS 2
  • Ruby
  • Ruby books
  • Ruby conferences
  • Ruby documentation
  • Ruby exceptions
  • Ruby gems
  • Ruby Mixins
  • Ruby mocks
  • Ruby on Rails
  • Ruby on Rails authentication with Devise
  • Ruby on Rails setup SOP
  • Ruby Splat operator
  • Ruby testing
  • Running a kube quadlet
  • Running asynchronous jobs in Rails
  • Running Linux on Apple Mac hardware
  • Running multiple containers with podman kube
  • Running NixOS on Proxmox LXC
  • Running Podman from a Toolbox container
  • Rust
  • Score.dev
  • Secure Shell
  • Security
  • Security incidents
  • Security Operations
  • Self-hosting
  • SELinux
  • SELinux blocks SSH local port forwarding
  • SELinux permissive mode
  • Separation of Concerns
  • Service communication
  • Ship-Show-Ask
  • Sidekiq
  • Single Responsibility Principle
  • Single Sign-On
  • Site reliability engineering
  • SMB
  • Smug tmux session manager
  • Software
  • Software architecture
  • Software architecture characteristics
  • Software deployment
  • Software development
  • Software licensing
  • SOLID Principles
  • SSH directly into tmux
  • Stacked diffs
  • Starting and running Varnish
  • Static site generator
  • StimulusJS
  • StimulusReflex
  • Storage technology
  • Supercomputer
  • Sway
  • Switching the mouse wheel to natural scrolling on Windows
  • Synfig
  • Synology NAS
  • System administration
  • System analysis using an LLM
  • System hardening
  • systemd
  • Systems Architecture
  • Systems Thinking
  • Tabs vs Spaces
  • Tailscale
  • Tailscale subnet router on Proxmox
  • Tailwind CSS
  • Tailwind transition effects with StimulusJS
  • Tech history
  • Technology
  • Templating configuration files from the shell
  • Terminal
  • Terminal-based applications
  • Terraform
  • Testing
  • Tests should be DAMP
  • Text editors
  • The Dev-Ops divide
  • The FIRST criteria for unit tests
  • Thunderbird
  • TLS
  • tmate
  • tmux
  • Toolbox container doesn't work after installing VirtualBox
  • Tracking project progress
  • Troubleshooting Varnish
  • TrueNAS Scale
  • Trunk-based development
  • Two-Factor Authorisation in Rails
  • Typesetting
  • Ubuntu Linux
  • Ubuntu Linux on the Raspberry Pi
  • Ubuntu workstation setup
  • Universal Blue
  • UNIX
  • Upgrade Rails
  • UPS monitoring
  • Urbackup
  • Use project version of Ruby in Github actions
  • Useful DevOps know-how
  • Using extra mouse keys in X11
  • Using TailwindCSS in Bridgetown
  • Using TailwindCSS in Rails
  • Using the SSH agent in WSL2
  • UX
  • Vagrant
  • Varnish
  • Varnish Configuration Language
  • Varnish monitoring and performance tuning
  • Varnish reporting and statistics
  • Velero
  • Version control system
  • Video file conversion
  • Video files
  • ViewComponent
  • vim
  • vim Cheatsheet
  • vim Essentials
  • Virtual desktop shortcuts for Windows
  • Virtual Machine
  • VirtualBox
  • VNC
  • VS Code
  • Wayland
  • Wayland with hybrid NVidia graphics on Fedora Workstation
  • Web applications
  • Web browser
  • Web design
  • Web development
  • Web form building
  • Web frontend development
  • Web operations
  • Web performance
  • Web security
  • Web servers
  • Web technology
  • Web-based tools
  • weechat
  • Wezterm
  • Why dotfiles are hidden in Unix
  • Window manager
  • Windows
  • Windows keyboard shortcuts
  • Windows Subsystem for Linux
  • Windows Workstation Setup
  • Windows Workstation WSL setup
  • WordPress
  • WordPress in Podman containers
  • Workaround for async sections in starship-prompt
  • World Wide Web
  • Writing a plugin system in Ada
  • Writing CLI applications in Ruby
  • Writing Markdown in NeoVim
  • Writing tests prevents errors from the start
  • WSL and VPN
  • X11
  • XDG Base Directory Specification
  • YAML
  • ZeroMQ
  • ZFS
  • Zigbee
  • zsh
  • Zulip
Copyright Jochen Lillich, trading as Monospace Mentor. All Rights Reserved.