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
  • Accessibility
  • Accessing Chef node attributes
  • Ace Keyboard Co
  • Active Record pattern
  • ActiveSupport Notifications
  • ActivityPub
  • Ada development tools
  • Ada programming language: reliability and development tools
  • Ada to C bindings
  • Add an app to run automatically at Windows startup
  • Add man pages to your Ruby CLI
  • Agile software development
  • Algorithms and data structures
  • Allow USB access to Brave installed from Flathub
  • Analyse inode usage of a filesystem
  • ANSI art
  • Ansible
  • Anti-patterns for distributed systems
  • Apache web server
  • Apply GNOME monitor layout to the GDM login screen
  • Apps to host yourself
  • Arch Linux
  • Architecture Decision Records
  • Artificial Intelligence
  • Asset precompilation required in Rails dev environment
  • Asynchronous Work
  • Atomic Linux distribution
  • Attributes of a good runbook
  • Authentication
  • Auto-registering composition
  • Auto-releasing a Ruby gem
  • Automation
  • Background jobs in Rails
  • Backup Synology NAS configuration
  • Bash
  • Bash tips and tricks
  • BBS software
  • Bloom filter
  • Bluefin Atomic Linux distribution
  • Bluefin installation breaks failing to write boot manager
  • Bluetooth
  • Borg backup
  • Borgmatic
  • Bridgetown
  • Browser-based tools for creating and sharing diagrams
  • btrfs Filesystem
  • Build and install Espanso on Fedora Silverblue using Distrobox
  • Build Bridgetown websites with PostCSS and Tailwind
  • Building a Mechanical Keyboard
  • Building command line tools in Ruby
  • Building forms in Rails with Tailwind CSS
  • Building reveal.js presentations with Jekyll
  • Building RPM packages
  • Bulletin Board System
  • Bundler
  • Bunny Fonts
  • C programming language
  • Cache invalidation
  • Caching
  • Call the Chef Server API from Ruby
  • Calypsi Tool Chains
  • Capybara
  • Changelog
  • Changing keycodes on the hardware level
  • ChatGPT
  • Chef Infra
  • Chezmoi
  • Choose between Rails after_save and after_commit callbacks
  • CI/CD
  • Clean Chef code
  • Clean Chef code: Depend on public cookbook interfaces
  • Clean Code
  • Cloud computing
  • CNCF
  • Code readability
  • Code reusability
  • Coding
  • Colemak
  • Command pattern
  • Commodore 64
  • Common Rails gems
  • Communication
  • Community
  • Compiler
  • Computer networking
  • Computer Science
  • Computer System
  • Computer Systems
  • Computing
  • Computing magazine archives
  • Configuration file formats
  • Consul: service discovery for distributed systems
  • Container Deployment
  • Container operating systems
  • Container Orchestration
  • Container Registry
  • Container Runtime
  • Content delivery network
  • Content management systems
  • Continuous delivery
  • Continuous integration
  • Conventional Commits
  • Corne
  • Crafting Interpreters - Robert Nystrom
  • Cray supercomputer company
  • Create a Toolbox from a custom Fedora image
  • Create a VM template in Proxmox
  • Crystal programming language
  • CSS
  • CSS layouts with Flexbox
  • Data backups: recovery basics and backup software
  • Data bag item object
  • Data processing
  • Database
  • Database performance
  • DelayedJob
  • Dependency Inversion Principle
  • Deploy Jekyll to Kubernetes
  • Deploy Ruby on Rails app on Kubernetes
  • Deploying Podman workloads with Ansible
  • Design anti-patterns
  • Design Patterns
  • Designing resilient background jobs
  • Desktop environments
  • Desktop Web Applications
  • Devbox
  • DevOps
  • DevOps automation
  • DevOps software vendors
  • DevOps tools
  • Devpod
  • Diataxis
  • Disable Gnome extension version checks
  • Distributed Systems
  • Distributed systems messaging
  • Distrobox
  • Docker
  • 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 Language Models
  • Drupal
  • Drupal caching
  • Dynamic loading of application plugins in Ada
  • Edit Markdown frontmatter with yq
  • Elasticsearch
  • Emacs
  • Emacs keybinds
  • Email
  • Enable fractional scaling in GNOME
  • Engineering standards
  • Environment Variables
  • Ergonomic keyboard
  • Error handling
  • esbuild
  • Export a Kubernetes manifest from a running Podman pod
  • ext4
  • Extending the Rails console
  • Feature Envy design antipattern
  • Fedora Silverblue
  • Fedora Silverblue workstation setup
  • Fedora Workstation
  • 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
  • Freedesktop Desktop Entry Specification
  • FreePascal
  • Game development
  • Game development in Ruby
  • GDM
  • GenAI policy
  • Generative AI
  • Generative models
  • Getting the current calendar week in Javascript
  • Git: distributed version control and practical commands
  • GitHub
  • GitHub bots and actions
  • Github enjoys Rails performance
  • GitLab
  • GitLab CI
  • Globbing in early Unix
  • GMK
  • GNOME Desktop Environment
  • GNOME keyring causes issues with SSH and Yubikey
  • Golang
  • GoodJob
  • Grafana
  • groff
  • GRUB
  • Hanami
  • Hardware
  • Hardware interrupts and processor event handling
  • HashiCorp
  • HashiCorp Nomad application scheduler
  • Hashing
  • Head of Line blocking
  • Helix terminal-based text editor
  • HHKB
  • Home automation
  • Home Row Mods
  • Homeassistant
  • Homebrew for Linux
  • Homebrew package manager
  • Homelab
  • Hotwire
  • How to change the Bluetooth host name in Windows 10
  • How to free up Ctrl-V in Windows Terminal
  • How to make Windows require a password for privilege escalation
  • How to make Windows use UTC for reading the clock
  • HTTP caching
  • HTTP caching proxy
  • HTTP-2
  • HTTP/3
  • HTTP: web protocol, caching and versions
  • Hyper key for custom keyboard shortcuts
  • Hypertext
  • Hypervisor
  • i3 Window Manager
  • Immutable desktop operating system
  • Implementing custom Rubocop rules
  • Incident Management
  • Incident report structure and outline
  • Indentation in vim and neovim
  • Indie Web
  • Information Technology
  • Infrastructure as Code
  • Inode
  • Install 1Password on Fedora Silverblue
  • Install an Ada development toolchain on Fedora Linux
  • 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 chat systems
  • Internet protocols
  • Internet services
  • IPv4
  • IRC
  • IT infrastructure
  • IT Operations
  • Jason Swett
  • JavaScript
  • Javascript bundling in Rails
  • Jekyll static site generator
  • JSON
  • Kamal
  • KDE
  • Key switches
  • Keyboard
  • Keyboard Group-Buys
  • Keyboard keycaps
  • Keyboard layouts
  • Keyboard shortcuts for the Windows virtual desktop
  • Keyboard vendors
  • Keycaps for mechanical keyboards
  • keyd
  • Keygem
  • Kitty (terminal application)
  • Kubernetes
  • Kubernetes backup
  • Kubernetes developer setup
  • Kubernetes monitoring
  • Kubernetes pod
  • Kubernetes Secrets
  • Kustomize
  • Kutt URL Shortener
  • KVM
  • Kyria
  • Large Language Model
  • Latency
  • Launching an SSH login right into tmux
  • Learning
  • Learning Linux
  • Let's Encrypt
  • Lily58
  • Lilypod
  • Limit and monitor a systemd service's CPU usage
  • Linear project management platform
  • Linting
  • Linux
  • Linux Container
  • Linux distribution
  • Linux hardware support
  • Linux Kernel
  • Linux package managers
  • Linux Shell
  • Linux system administration
  • Liskov Substitution Principle
  • Live streaming
  • Load balancing
  • Loading code at runtime in Ruby
  • Lubricants for mechanical keyboards
  • LXC
  • M0llY
  • Mac fan not spinning up
  • Machine learning
  • macOS
  • macOS development workstation setup
  • macOS troubleshooting and recovery tips
  • Maintainability
  • Maintaing a Ruby gem
  • Making my own Nerd Font
  • Managed hosting
  • Managing external NeoVim tools with Mason
  • Manjaro Linux
  • Manjaro Linux on the Raspberry Pi
  • Map extra mouse buttons to keyboard shortcuts in X11
  • Markdown
  • Markdown processing
  • Martin Fowler
  • Mastodon administration
  • Mastodon Comments for Static Sites
  • Mastodon decentralized social network
  • Mastodon development
  • Mastodon instance operations
  • Matrix server setup guide for Ubuntu 20.04
  • Matrix: open standard for decentralized communication
  • Mechanical keyboard
  • Mechboards
  • Memory allocation
  • Message bus
  • Messaging system
  • MinIO S3-compatible object storage
  • Minix
  • Miryoku
  • Mixins
  • Modula
  • Monitoring
  • Monorepo: Version control for multiple projects in one repository
  • MooseFS
  • Mozilla
  • MPD permissions on Synology NAS
  • MySQL
  • NABC: a framework for structuring proposals
  • Nativefier: turn websites into Linux desktop apps
  • NATS
  • NeoVim
  • NeoVim configuration in Lua
  • NeoVim Language Server Support
  • Netdata
  • Netlify
  • Network operations
  • Network protocols
  • NetworkManager
  • Neural network
  • Nextcloud
  • nginx web server
  • ngrok
  • Nim systems programming language
  • niri Window Manager
  • Nix package manager
  • NixOS
  • Notifications for Ruby on Rails apps
  • Object inheritance
  • Object-oriented design
  • Object-oriented programming (OOP)
  • Observability
  • OCI Container
  • OCSP
  • OctoDNS
  • Open Source Ada projects
  • Open source maintainership
  • Open source software
  • Open-Closed Principle
  • OpenSearch
  • OpenVMS
  • Operating systems
  • Overlay network
  • Owncast
  • Pacman (package manager)
  • Pants build system
  • Pascal programming language
  • PDP-11
  • PeerTube
  • Perl
  • PHP
  • pi-hole
  • PixelFed
  • Planck ortholinear keyboard
  • Podman
  • Podmander
  • Portainer
  • PostgreSQL: Practical tips
  • Practical Object-Oriented Design in Ruby (book)
  • Presenter pattern
  • Programmable configuration file formats
  • Programming language
  • Programming language interpreters
  • Project management
  • Prometheus
  • Prometheus TLS and Basic Auth
  • Proxmox
  • Proxmox on Hetzner
  • Pull Request
  • Puma web server
  • Python programming language
  • QMK keyboard firmware
  • Quadlet
  • Quoting strings in Ruby
  • RabbitMQ
  • RAID
  • Rails Action Controller: handling web requests
  • Rails asset pipeline
  • Rails browser testing with Cuprite
  • Rails concerns
  • Rails credentials
  • Rails in-app documentation with a Rails engine
  • Rails routes
  • Rails testing
  • Rails Tips and Tricks
  • Rails upgrade guides by version
  • Raspberry Pi
  • rbenv
  • RC2014
  • Reducing Ruby memory footprint
  • Refactoring
  • Refactoring UI
  • Reliability
  • Remap Super key combos in GNOME
  • Remind: text-based calendar and reminder software
  • Remote Work
  • REPL
  • Resolving the .local TLD in Ubuntu
  • Resources for learning Ruby
  • Retries
  • Retro Programming
  • Retrocomputing
  • reveal.js
  • Rewriting git history
  • RFC
  • Robert C. Martin
  • Robust shell scripting
  • Root Cause Analysis
  • Rotate a GitLab token and reconnect the Linear integration
  • rpm-ostree
  • RSpec
  • RSX-11
  • RSX-11 - Installing RPM package manager
  • RSX-11 - Programming BASIC PLUS 2
  • 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 programming language
  • Ruby Splat operator
  • Ruby testing
  • Run a Kubernetes manifest with a Podman Quadlet unit
  • Run Forgejo CI jobs with rootless Podman on Fedora
  • Running asynchronous jobs in Rails
  • Running Linux on Apple Mac hardware
  • Running NixOS on Proxmox LXC
  • Running WordPress in Podman containers
  • Rust programming language
  • Saturn60
  • Schenker VISION 14
  • Score.dev
  • Secure Shell (SSH)
  • Security
  • Security incidents
  • Security Operations
  • Self-hosted Mastodon setup, updates and scaling
  • Self-hosting
  • SELinux
  • SELinux blocks SSH local port forwarding
  • SELinux permissive mode
  • Separation of Concerns
  • Service availability: uptime and user-perceived reliability
  • Service communication
  • Set up a Linux development workstation
  • Set up a Manjaro Linux workstation
  • Set up Fedora Workstation for desktop, VMs and development
  • Ship/Show/Ask
  • Sidekiq
  • Single Responsibility Principle
  • Single Sign-On
  • Site reliability engineering (SRE)
  • SMB
  • Smug tmux session manager
  • Software
  • Software architecture
  • Software architecture characteristics
  • Software deployment
  • Software development
  • Software development environments and tools
  • Software licensing
  • Software project configuration management
  • Soldering
  • SOLID Principles
  • SplitKB
  • Stacked diffs
  • Starting and running Varnish
  • Static site generator
  • StimulusJS
  • StimulusReflex
  • Storage technology
  • Supercomputer
  • Sway tiling Wayland compositor
  • Switching the mouse wheel to natural scrolling
  • 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 enter/leave transition effects with StimulusJS
  • Tech history
  • Technology
  • Templating configuration files from the shell
  • Terminal
  • Terminal-based applications
  • Terraform infrastructure-as-code tool
  • Testing
  • Tests should be DAMP
  • Text editors
  • The Active Record pattern in Ruby on Rails
  • The CP/M operating system
  • The Dev-Ops divide
  • The FIRST criteria for unit tests
  • The Keyboard Company
  • Thunderbird
  • TLS/SSL
  • tmate
  • tmux
  • Toolbox container doesn't work after installing VirtualBox
  • Toolbox containers for Linux development and troubleshooting
  • Touch typing
  • Tracking project progress
  • Troubleshooting Varnish
  • TrueNAS Scale
  • Trunk-based development
  • Tuxedo Computers
  • Tuxedo Control Center
  • Tuxedo Infinitybook 14
  • Two-Factor Authorisation in Rails
  • Typesetting
  • Typewriter effect in Javascript
  • Ubuntu Linux
  • Ubuntu Linux on the Raspberry Pi
  • Ubuntu workstation setup
  • UEFI
  • UKKeycaps
  • Universal Blue
  • UNIX
  • UPS monitoring
  • Urbackup
  • Use Jupyter notebook for Ruby
  • Use project version of Ruby in Github actions
  • Use Rails URL helpers outside views
  • Use the host Podman socket from a Toolbox container
  • Useful DevOps know-how
  • User Experience (UX)
  • Using and Administering Linux Volume 1 - David Both
  • Using and Administering Linux Volume 2 - David Both
  • Using and Administering Linux Volume 3 - David Both
  • Using TailwindCSS in Bridgetown
  • Using TailwindCSS in Rails
  • Using the SSH agent in WSL2
  • Using WSL with a VPN
  • Vagrant
  • Value Proposition
  • Varnish Cache: accelerating web content delivery
  • 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 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 server software
  • Web technology
  • Web-based tools
  • weechat
  • Wezterm
  • Why dotfiles are hidden in Unix
  • Why you should avoid array node attributes with Chef
  • Window manager
  • Windows
  • Windows keyboard shortcuts
  • Windows Subsystem for Linux (WSL)
  • Windows Workstation Setup
  • Windows Workstation WSL Setup
  • WordPress
  • 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
  • X11
  • XC BASIC
  • XDG Base Directory Specification
  • YAML
  • Yubikey
  • ZeroMQ
  • ZFS
  • Zigbee
  • zsh
  • Zulip
Copyright Jochen Lillich, trading as Monospace Mentor. All Rights Reserved.