All posts:

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