All posts:
- TIL: Pinning eBPF maps
- TIL: The basics of writing eBPF programs
- Patching ripgrep to enable per-directory configuration
- TIL: Atomically check existence for file and create if it does not exist
- Adding a new command to tmux
- tmux's "object oriented" approach to commands
- C metaprogramming: BSD's sys/tree.h red-black trees
- C metaprogramming: type-generic lists and queues using sys/queue.h
- TIL: Rails 7 non-GET links
- TIL: Endianness and integral types in C
- TIL: Parse Platform: '.include()' on queries results in N+1 queries
- TIL: Use feature test macros to control defintions exposed in system header files
- TIL: Use poll to handle I/O multiplexing across multiple Unix sockets
- TIL: auto-deploy doxygen to GitHub Pages
- TIL: Using waitpid to handle zombie processes without blocking parent process
- TIL: coc.nvim goto features
- TIL: use git interactive rebase to combine multiple commits in different ways
- TIL: filter-out in GNU Make
- TIL: Use xxd to create a hex dump
- TIL: Deconstruct C types of unknown size to byte array
- TIL: nix IPC APIs
- TIL: memcpy vs memmove
- TIL: Initializing C objects
- TIL: enable 256 color support in Tmux
- TIL: Enabling CORS when using HAProxy as a gateway
- TIL: Writing Express.js middlewares
- TIL: Using RelaxedJSON to fix almost-JSON
- TIL: Use Postgres listen/notify for asynchronous communication
- TIL: JWT token structure
- Switching my blog to a homemade SSG
- TIL: Build a Go project using gomod2nix
- TIL: Determine vendorSha256 for Nix Go build
- TIL: Build a Go app from local src directory on NixOS
- TIL: Open a port in the NixOS firewall
- Stomper transactions and atomicity
- Authenticating to GCP with a Heroku app: a cautionary tale
- TIL: Stopping a Heroku build
- TIL: Notes on using a MongoDB Atlas free shared instance for development
- TIL: Deploying Go apps on Heroku
- TIL: Working with nullable rows and the Go driver pgx
- TIL: Using Go's selenium package to wait for something
- TIL: array_agg SQL aggregate function
- TIL: MongoDB array update with $push and $pull
- TIL: Interact with GPIO on Raspberry Pi with Go
- TIL: Self-signed SSL for lab environment
- Makefiles rock
- Lessons from writing Stomper
- TIL: LSP hover support in Neovim with vim-lsp
- TIL: Automatically link PR to issue on GitHub
- TIL: Managing configuration with Viper in Go
- TIL: go vet and staticcheck for linting and analysis
- TIL: Go subtests
- TIL: Creating a custom bufio.Scanner in Go
- TIL: ActiveRecord hash conditions and parameterized conditions
- TIL: Go reflect.DeepEqual to compare maps
- TIL: Go bufio.Scanner only discards a single trailing newline
- A toy message queueing server in Go
- Structure of MQ Go
- TIL: Go loops and closures
- Use a Raspberry Pi Zero W as a print server
- Simple regex written as FSM
- TIL: Using a struct as a map key in Go
- Creating a TUI for Pihole log exploration in Go
- TIL: Using anonymous functions in Go
- TIL: Parsing dates and times in Go with time.Parse(...)
- TIL: Use strings.Fields() to split strings on whitespace in Go
- TIL: clear search highlighting in Vim
- Big Picture photo gallery
- TIL: Use yes to provide input to terminal programs
- TIL: LaTeX equations in Notion documents
- TIL: Create relationships between issues on GitLab
- TIL: CloudFront redirect issues with newly created S3 buckets
- TIL: runbooks and playbooks
- TIL: SQLAlchemy ENUM columns
- TIL: Write tests you expect to fail in pytest
- TIL: set working directory to local path in shell script
- Comparing common (free) continuous integration / continuous deployment tools
- TIL: Use AWS CloudWatch to monitor workload health
- What I'm working on
- TIL: IAM vs root account
- TIL: use AirPort Utility to measure wireless network signal
- TIL: Use AutoHotkey hotstrings to ease recordkeeping
- TIL: Using NGINX as a content cache
- Configure an Nginx reverse proxy with Ansible
- TIL: display path to current file in Vim
- TIL: Configure Nginx as a load balancer
- TIL: Changing indentation in Vim
- Make it easy
- Troubleshooting a configuration problem
- TIL: deploy Debian 10 automatically with FAI
- TIL: pipe output from terminal command into Vim
- Converting Ansible plays to Ansible roles
- TIL: use fixtures to provide standard context to pytest tests
- Configure NGINX as reverse proxy
- TIL: set up push mirroring from GitLab to GitHub
- Creating QEMU guests from cloud images
- TIL: Count words in a buffer or block in Vim
- TIL: manage build artifacts with Gitlab CI
- TIL: use Ansible Vault to manage secrets
- Using Ansible to configure fresh Debian machines
- TIL: save the state of a Docker container with docker export