underlap

Archive

  1. Improving my Go
  2. Stopping coding, Go
  3. Claude Code reflection
  4. Moving on to Servo
  5. Claude Code
  6. ipc-channel-mux router support
  7. Return to GitHub
  8. 2025
  9. Dead code
  10. IPC channel multiplexer
  11. /search/
  12. What am I up to "now"?
  13. IPC channel multiplexing: what next?
  14. Metrics
  15. RSS thank-you
  16. Visitor stats and the point of blogging
  17. Developer's block
  18. Software convergence
  19. Week note 2025-08-21
  20. Is it worth blocking AI bots?
  21. Formatting maths in Eleventy with KaTeX
  22. Blogging in markdown
  23. Arch linux take two
  24. Understanding eleventy
  25. Adding notes to an eleventy blog
  26. Replacing WriteFreely with eleventy
  27. i3 it is
  28. i3 versus a suckless window manager?
  29. Switching from xmonad to i3
  30. IPC channel multiplexing: next steps
  31. Is IPC channel multiplexing really necessary?
  32. Multiplexing principles
  33. IPC multiplexing prototype goes public
  34. Complexity, surface area, and traction
  35. Multiplexing over IPC channels: subchannel lifecycle
  36. Another Fosstodon moderator steps down
  37. Design driven development
  38. An ideal Linux desktop
  39. Fosstodon and authoritarian behaviour
  40. Multiplexing over IPC channels: a prototype
  41. The psychology of software development¹
  42. Self-hosting a RSS reader
  43. Software lineage: Mach ports vs BSD
  44. Blog questions challenge
  45. Progress on ipc-channel
  46. Understanding Unix sockets
  47. Social media and thought life
  48. A new project: servo/ipc-channel
  49. Advent of blogs: reflection
  50. Privacy
  51. What's occurring?¹
  52. Advent of blogs half done
  53. Principled code
  54. Guest book
  55. One year of underlap.org
  56. Trialling comments
  57. Advent of blogs
  58. Uses
  59. Blogs, signal to noise ratio, and discovery
  60. The notebook
  61. Renewing my SSL certificate
  62. How to learn Rust
  63. Ethics
  64. Open development experiment: reflection and conclusion
  65. Open development experiment: ordering function definition
  66. Open development experiment: re-entry
  67. Approaches to concurrent programming
  68. Open development experiment: interactions
  69. Open development experiment: search for Feistel networks
  70. Open development experiment: cryptographic primitives
  71. Open development experiment: ordering function (and reflection)
  72. Formatting maths using Typst
  73. Reflections on being a visiting lecturer
  74. Time to upgrade macOS
  75. Open development experiment: design
  76. Open development experiment: requirements
  77. Open development experiment: mathematical interlude
  78. An experiment in truly open software development
  79. Self-hosting a Rust link shortener
  80. Focused commits
  81. Construction of software and mathematical proofs
  82. Taking the blades SSG for a spin
  83. Static site generators
  84. VPS web server process users
  85. Notes
  86. VPS memory usage
  87. Incremental IndieWeb
  88. Re-basing webfinger-rs on fluent-uri-rs
  89. Installing webfinger-rs
  90. Approximating WebFinger via nginx
  91. A WebFinger server written in Rust
  92. Change of email address
  93. Writing better software design documents
  94. Why write unit tests? A response
  95. Dot Social: Threads Has Entered the Fediverse
  96. Blocking AI web crawlers
  97. NGINX robot access
  98. Starting a new programming project
  99. About anonymous blogging
  100. "I just wanna link the thing"
  101. Single user instances
  102. Process algebra and JSONPath descendant segment semantics
  103. License
  104. WriteFreely v0.15.0
  105. Testing non-deterministic behaviour
  106. "Programming Pearls" from the 1980's
  107. I don't understand
  108. Links
  109. Animating source code evolution
  110. Implementing JSONPath RFC 9535
  111. JSONPath: from blog post to RFC in 17 years
  112. Understanding Haskell's type system
  113. Top ten technical books
  114. "Cornerstones"
  115. Subscribe
  116. Topics
  117. Will I ever degoogle?
  118. Written by human, not AI
  119. The bad old days
  120. Blogroll
  121. Recovering from a pacman crash on arch Linux
  122. How to grow other software developers
  123. Start with an empty git commit
  124. NVIDIA problem upgrading arch to 6.7 kernel
  125. The Post Office Horizon system and ACID transactions
  126. Early internet access
  127. Abstracting cloud storage
  128. This site, one month in
  129. Account portability in the social web
  130. Why I loved mathematics and loathed history
  131. Promotion and its consequences
  132. Career planning or serendipity?
  133. Monads and more
  134. How I got into software development
  135. Software characters
  136. Retrospective posts (2007-2013)
  137. No solution for complexity - retrospective
  138. Leaving IBM - retrospective
  139. Joining Interface21 - retrospective
  140. Life in a small company - retrospective
  141. Coding and hill-walking - retrospective
  142. OSGi resolution is NP-Complete. So what? - retrospective
  143. Stumbling towards a better design - retrospective
  144. What did we learn in 100 sprints?
  145. Temporary simplification - retrospective
  146. Why I hate spikes - retrospective
  147. Harmful distractions - retrospective
  148. Work-life balance - retrospective
  149. Scrapping designs - retrospective
  150. Writing partial designs - retrospective
  151. Retrospective posts (2007-2013)
  152. The design documentation pendulum
  153. Why "underlap"?
  154. YAML considered harmful
  155. Fix for server error
  156. Backing up my WriteFreely instance
  157. Automatic RSS feeds
  158. Setting up a WriteFreely instance
  159. JSONPath RFC Nearing Publication
  160. Blog posts: historical documents or ephemera?
  161. Bring Back Blogging
  162. Tidying up git branches
  163. Managing scratch files in a git project
  164. Micro-commits
  165. On formalism in specification
  166. Software Manifestos
  167. A JSONPath Internet Draft
  168. The humble commit message
  169. Getting started with TDD
  170. So you want to be a software developer?