All posts

  1. .vimrc
  2. 12 rules for living
  3. 15 notes on testing software
  4. 2022 favorites to date
  5. A Shapley example
  6. A common trap for people entering programming jobs
  7. A quick argument for naming all software prototypes after birds
  8. All posts
  9. An argument from Jimmy Koppel
  10. Books I like more than other people do
  11. How I got into programming
  12. How academics can find non-academic work
  13. Listening notes: Jason Strasser on the Risk of Ruin podcast
  14. Listening notes: Kate Grace on The Morning Shakeout
  15. Listening notes: Russ Roberts and Tyler Cowen on reading
  16. Listening notes: Test and Code 191
  17. Listening notes: The Pragmatic Programmer
  18. Most recent posts
  19. My information diet
  20. Nate Meyvis
  21. New site design
  22. Notes on a Bryan Cantrill talk
  23. Notes on parenting
  24. Notes on writing a static site generator
  25. On (non-software) dependency management
  26. On Anki's database
  27. On Bryan Caplan's spreadsheets
  28. On Conversations with Tyler
  29. On Excel, context, and talent
  30. On accidentally starting a newsletter
  31. On actually reading the book
  32. On capturing thoughts
  33. On checklists, again
  34. On coordinating intrapersonal skill levels
  35. On dependencies
  36. On dependencies in small projects
  37. On distributing reading time
  38. On editing text
  39. On estimating the value of GitHub Copilot
  40. On having philosophy in your life
  41. On improving data-adjacent code
  42. On learning Vim
  43. On linear scans
  44. On long books
  45. On middlebrow books
  46. On poker's comparative advantage
  47. On poker's comparative disadvantage
  48. On preparing for coding interviews
  49. On productivity
  50. On quadratic complexity
  51. On ranking things
  52. On ranking things
  53. On reading The Diff
  54. On reading canonical literature
  55. On recovering
  56. On scarcity and regionality
  57. On self-experimentation in spaced repetition
  58. On studying for a new job in software
  59. On studying for your upcoming job: objections and replies
  60. On talking to think better
  61. On task management
  62. On the death of new music
  63. On the scarcity of context
  64. On type safety in natural language
  65. On using Anki
  66. On using Anki, again
  67. On using a Kindle
  68. On viewquakes
  69. On winning auctions
  70. Podcasting FAQ
  71. Python task manager from scratch, part 0: Introduction
  72. Python task manager from scratch, part 10: Task objects
  73. Python task manager from scratch, part 11: First bugfix
  74. Python task manager from scratch, part 12: A Task repository
  75. Python task manager from scratch, part 13: Fix a major mistake
  76. Python task manager from scratch, part 14: Make an interface
  77. Python task manager from scratch, part 15: Prepare the way
  78. Python task manager from scratch, part 16: Making a first Web display
  79. Python task manager from scratch, part 17: Generating some HTML
  80. Python task manager from scratch, part 18: Adding a feature
  81. Python task manager from scratch, part 19: Preparing the way II
  82. Python task manager from scratch, part 1: First steps
  83. Python task manager from scratch, part 20: Adding a form
  84. Python task manager from scratch, part 21: Preparing the way III
  85. Python task manager from scratch, part 22: Another Task field
  86. Python task manager from scratch, part 23: Retrieving tasks by UUID
  87. Python task manager from scratch, part 24: Supporting Task modification
  88. Python task manager from scratch, part 25: Handling a bug
  89. Python task manager from scratch, part 26: Adding task-completion functionality
  90. Python task manager from scratch, part 27: Using a real database
  91. Python task manager from scratch, part 28: Taking stock
  92. Python task manager from scratch, part 29: Cosmetic improvements
  93. Python task manager from scratch, part 2: First cleanup!
  94. Python task manager from scratch, part 30: Adding a feature I want
  95. Python task manager from scratch, part 31: Adding some style
  96. Python task manager from scratch, part 32: More Task properties
  97. Python task manager from scratch, part 33: Updating the persistence logic for tasks
  98. Python task manager from scratch, part 34: Adding styles based on task states
  99. Python task manager from scratch, part 35: Listing tasks from the command line
  100. Python task manager from scratch, part 36: Preparing for recurring tasks
  101. Python task manager from scratch, part 37: Fixing our coordinator
  102. Python task manager from scratch, part 38: Add a license
  103. Python task manager from scratch, part 39: Thinking about interfaces, again
  104. Python task manager from scratch, part 3: Separating the data
  105. Python task manager from scratch, part 40: Persisting task coordinators
  106. Python task manager from scratch, part 41: Setting up event handling
  107. Python task manager from scratch, part 42: Resolving a circular import
  108. Python task manager from scratch, part 43: Preparing the way IV
  109. Python task manager from scratch, part 44: Implementing repeating tasks
  110. Python task manager from scratch, part 45: Supporting environments
  111. Python task manager from scratch, part 46: Getting handlers under test
  112. Python task manager from scratch, part 47: Tidying up the front end
  113. Python task manager from scratch, part 4: Making functions
  114. Python task manager from scratch, part 5: Setting up version control
  115. Python task manager from scratch, part 6: Adding a .gitignore
  116. Python task manager from scratch, part 7: Adding and removing tasks
  117. Python task manager from scratch, part 8: Requirements management
  118. Python task manager from scratch, part 9: First tests
  119. Reading notes: A Philosophy of Software Design
  120. Reading notes: A Widow For One Year
  121. Reading notes: From Front Porch to Back Seat
  122. Reading notes: How to Change
  123. Reading notes: How to Fail at Almost Everything and Still Win Big
  124. Reading notes: Lonesome Dove
  125. Reading notes: Patterns of Software
  126. Reading notes: Talent
  127. Reading notes: The Inner Game of Tennis
  128. Reading notes: The Last Days of Roger Federer
  129. Reading notes: The Manager's Path
  130. Reading notes: The Score Takes Care of Itself
  131. Reading notes: The Three-Body Problem
  132. Reading notes: The Tim Tebow CFL Chronicles
  133. Rubber duck text editing
  134. Skills for academics
  135. Software FAQ
  136. Software design resources
  137. The 100 books nearest to my heart
  138. The Ideal of the Open Mind
  139. The Lawnmower Essay and the Problems of Philosophy
  140. Veery: a Python project from scratch
  141. Viewquake: Decisionmaking is overrated
  142. Viewquake: interpreting obvious mistakes
  143. Why don't people talk about the Shapley value more?

Home page