sm

Feed

All content on seanmcp.com


  1. Board GamesSpeed Catan
  2. Board GamesSanders of Catan
  3. ArticlesDefaults 2026
  4. ArticlesAI use case: Asking questions of large files
  5. Adventure GamesI tried mapping and didn't like it
  6. Adventure GamesCairn Advancement Hack
  7. WebLost Stranger Things finale mid-credits scene
  8. Adventure GamesRandom Table of German Names
  9. ArticlesInstall curl with apt (and not snap)
  10. Adventure GamesGM Mistake #2: Blocking low-stakes exploration
  11. ArticlesFour perspectives on AI
  12. ArticlesAxe DevTools doesn't flag multiple h1 elements on a page
  13. ArticlesWriting code was never the bottleneck in software engineering
  14. Adventure GamesShadowdark characters are fragile
  15. Adventure GamesCairn 1999
  16. WebDog Poo
  17. ArticlesColocate functionally-related code
  18. ArticlesMaccy is a great clipboard manager for Mac
  19. Adventure GamesHazard table
  20. Adventure Games5 tips for designing better adventures
  21. LocalKellen Lovejoy presumptive winner in primary election for Wilkinsburg Council Ward 1
  22. Adventure GamesThe Copper Caves
  23. Adventure GamesGM Mistakes #1: Balancing Realism and Playability
  24. Adventure GamesRethinking wolves
  25. Adventure GamesSoloDark Together: Session 1
  26. ArticlesMy on-again-off-again relationship with AI assistants
  27. LocalWhat to do when you find a dead deer on the street in Allegheny County?
  28. ArticlesIntroducing Speed Catan
  29. Adventure GamesRandom Encounters
  30. ArticlesZed still isn't ready
  31. ArticlesRewriting in Eleventy (again)
  32. WebThe only line from Shrek with a Canadian accent
  33. ArticlesMc-Pher-son
  34. ArticlesBalance bikes are just better
  35. ArticlesDeleting my GPTs
  36. ArticlesSmile and wave
  37. ArticlesPittsburgh TechFest 2024
  38. ArticlesSeventy7 Ventures feigns credibility with fake "Best of British Business" award
  39. Adventure GamesSpellcasting Chaos Table
  40. ArticlesBypass "Error: There are no prompts" in promptfoo
  41. ArticlesUse state callbacks in React
  42. ArticlesVIVO sit/stand desk
  43. ArticlesSimplify event delegation with the Element.closest method
  44. ArticlesAlign content in Markdown tables
  45. Adventure GamesCairn Starter-package Table
  46. Adventure GamesFive-room Dungeons
  47. ArticlesSolo-playing Adventure Games with AI
  48. ArticlesCSS nesting is (almost) ready
  49. ArticlesLooking over the fence at Eleventy
  50. ResourcesGetting started with Eleventy
  51. ArticlesChatGPT 4o isn't a good researcher yet
  52. ArticlesAstro and release velocity
  53. ArticlesRender and effect call order in React
  54. ArticlesTweaking garden details
  55. Adventure GamesCairn RPG
  56. ResourcesDebugging
  57. ArticlesManage your photo archive
  58. ArticlesSite update May 2024
  59. ArticlesMeasuring and cutting
  60. ArticlesA Few Things #12
  61. ArticlesA Few Things #11
  62. ArticlesA Few Things #10
  63. ArticlesCreate a custom search for a static site
  64. ArticlesFix missing Astro files on GitHub pages
  65. ArticlesCreate a useIsOnline React hook
  66. ArticlesFix static file endpoints after Astro v4 upgrade
  67. ArticlesUpgrading from Astro v2 to v4
  68. ArticlesA Few Things #9
  69. ArticlesOn articles and blogs
  70. ArticlesA Few Things #8
  71. ArticlesWhy Microsoft Edge?
  72. ArticlesSwitching from Ubuntu to Linux Mint
  73. ArticlesA Few Things #7
  74. ArticlesA Few Things #6
  75. ArticlesRunning Ollama without a GPU
  76. ArticlesUse Ollama with the official Python library
  77. ArticlesA Few Things #5
  78. ArticlesGet started prompt engineering with local LLMs
  79. ArticlesAdding a components page
  80. ArticlesMaking a video game with my kids
  81. ArticlesA Few Things #4
  82. ResourcesPython Reference
  83. ArticlesA Few Things #3
  84. ArticlesAdobe has the worst captcha
  85. ArticlesA Few Things #2
  86. ArticlesReceiving cold-emails from GitHub stars
  87. ArticlesA Few Things #1
  88. ArticlesDid OpenAI's Web Browser GPT leak its prompt?
  89. ArticlesMigrating from Google Domains to Porkbun was...
  90. ArticlesNormalizing data is a good idea
  91. ArticlesHow I'm using AI in November 2023
  92. ResourcesFonts
  93. ArticlesSli.dev review
  94. ArticlesIs it better to have one large file or multiple small files with GPTs?
  95. ArticlesWhat is the file limit for GTPs?
  96. ArticlesHow I'm using AI in October 2023
  97. ArticlesGPTs read text files better than markdown
  98. ArticlesThoughts on Web Speech API
  99. ArticlesDeclarative code and cognitive load
  100. ArticlesAttempting #divtober 2023
  101. ArticlesHow I'm using AI in August & September 2023
  102. ArticlesSee what object properties are accessed in JavaScript
  103. ArticlesRemove duplicates from an array in JavaScript
  104. ArticlesOff to Kindergarten
  105. Articles1000 commits
  106. ArticlesHow I'm using AI in July 2023
  107. ArticlesTimeboxing types
  108. ArticlesCSS columns are neat
  109. ArticlesQuality requires iteration
  110. ArticlesA workable emoji picker on Ubuntu
  111. ResourcesWriting Prompts for Programmers
  112. ArticlesLosing steam
  113. ArticlesReviewing "Go By Example"
  114. ArticlesHow I'm Using AI in June 2023
  115. ArticlesA quick comparison of JavaScript and Go executables
  116. ResourcesPodcasts
  117. ArticlesI have never reviewed a podcast
  118. ArticlesCompairing Objects, Maps, and WeakMaps for lookup tables in JavaScript
  119. ArticlesWeb-browser Accessibility Tools
  120. ArticlesLinux Update in 2023
  121. ArticlesHow I'm using AI in May 2023
  122. ArticlesDeclaring variables in Go
  123. ArticlesWhat is nullish in JavaScript?
  124. ArticlesQA questions for everyone to ask
  125. ArticlesLearning Go
  126. ArticlesSet up Decap CMS
  127. ArticlesZed is a rocket-powered skateboard
  128. ArticlesFix failed Fastify deploy on Render
  129. ArticlesFind and replace with Regex groups
  130. ArticlesFix SVG CSS animation issue in Safari
  131. ArticlesListen for class change in JavaScript
  132. ArticlesReviewing my Netlify Analytics
  133. ArticlesCreate Axios-style articles with CSS
  134. ArticlesCSS :empty pseudo class
  135. ArticlesFix trailing whitespace in Astro components
  136. ArticlesFarewell Create React App
  137. ArticlesStarting an RSS Club
  138. ArticlesOn closings
  139. ArticlesHow long should it take to write an article?
  140. ArticlesMy writing process in February 2023
  141. ArticlesLearning about Smart Brevity for writing
  142. ArticlesValid JavaScript variable names
  143. ArticlesBurrito emoji
  144. ArticlesMigrating to IndieWeb.social
  145. ArticlesPublishing a Qwik component
  146. ArticlesFix Astro dev server hanging with new collections API
  147. ArticlesSite improvements in 2023
  148. ArticlesBack from time off
  149. ResourcesVS Code
  150. ArticlesBe careful parsing formatted numbers in JavaScript
  151. ArticlesNew command palette
  152. ArticlesFix "package esbuild-linux-64 could not be found" error on Netlify
  153. ArticlesAdding images to articles (again)
  154. ArticlesPortable custom search engines
  155. ArticlesA first look at Static CMS with Astro
  156. ArticlesAstro components do not merge HTML attributes
  157. ArticlesRun Netlify CMS and your dev server in one command
  158. ArticlesFix Netlify Dev's 'Multiple possible start commands found' issue
  159. ArticlesAstro components for Netlify features
  160. ArticlesCreate a "Dave Rupert"-inspired activity graph
  161. ArticlesUse your domain on Mastodon with Astro
  162. ArticlesThoughts on Steve Job on consulting
  163. ArticlesAre command bars the future?
  164. ArticlesNode.js is great for scripting
  165. ArticlesThere is no multi-tasking on the Raspberry Pi
  166. ArticlesFinding a Linux distro and software that work
  167. ArticlesGiving Linux another try
  168. ResourcesBrowser extensions
  169. ArticlesAwesome browser extensions
  170. ArticlesUsing dynamic routes to organize blog posts in Astro
  171. ArticlesRebuilding with Astro
  172. ResourcesJest
  173. ArticlesJest tips & tricks
  174. ArticlesSolid VS Code extensions
  175. ArticlesHow to use StackBlitz with Firefox
  176. ArticlesHow to replace Math.random with crypto in JavaScript
  177. ArticlesStarring content
  178. ArticlesUse multiple Chrome Profiles when debugging
  179. ArticlesWhen to use React's memo HOC
  180. ArticlesCalculate the sum of everything up to a given number
  181. ArticlesEnglish words by consonant-vowel pattern
  182. ArticlesMusic to code to
  183. ResourcesCoding Music
  184. ArticlesAdd a custom emulated device in Chrome
  185. ArticlesUpgrading an Eleventy site to 1.0.0
  186. ArticlesMake a web component
  187. ArticlesPrevent Chrome from adjusting audio input levels on Mac
  188. ResourcesSlack Emojis
  189. ArticlesMy best Slack emojis
  190. ArticlesHelpful online tools for diagramming
  191. ArticlesWhat is a build.gradle file?
  192. ArticlesThree new games on Toollama
  193. ResourcesReact Native
  194. ArticlesReact Native Glossary
  195. ArticlesWhat happened to @react-native-community packages?
  196. ArticlesFind an iOS simulator identifier
  197. ArticlesUsing BEM names in React Native
  198. ArticlesReflecting on a new role
  199. ArticlesWhat is Hermes in React Native?
  200. ArticlesWhat is the song from Boston Dynamic's Spot Launch video?
  201. ArticlesAdd a YouTube-embedder shortcode to your Eleventy site
  202. ArticlesGet innerHTML of Enzyme wrapper
  203. ArticlesUse remark to covert markdown into HTML
  204. ArticlesCount class methods in JavaScript
  205. ArticlesA modest redesign for 2021
  206. ResourcesLatin
  207. ArticlesLatin phrases to know
  208. ArticlesHandy git commands
  209. ResourcesGit
  210. ArticlesRead URL search parameters with JavaScript
  211. ArticlesFix 'downloadable font: rejected by sanitizer' error in Firefox
  212. ArticlesFix Netlify CMS YAML error 'Implicit map keys need to be on a single line'
  213. ArticlesCOVID-19 journal
  214. ArticlesCopy the last git commit hash on macOS
  215. ArticlesAdd Heroicons to an Eleventy site
  216. ArticlesCreate a URL shortener with Netlify
  217. ArticlesSet innerHTML of an element in Svelte
  218. ResourcesBuilding browser extensions
  219. ArticlesLet's stop skinning cats
  220. ArticlesSearch all files for two strings
  221. ArticlesSetup Netlify CMS with Eleventy
  222. ArticlesFix "Error: Could not resolve pagination key in template data" in Eleventy
  223. ArticlesGeddes' Guide to Crafting
  224. ArticlesSend data to the window with Eleventy
  225. ArticlesCheckout the previous git branch
  226. ArticlesMake all properties required in TypeScript
  227. ArticlesAdd text to the beginning of every file
  228. ArticlesSass converts hsla to hex incorrectly
  229. ArticlesChange extensions of all files in a directory
  230. ArticlesIncrease the playback speed on any audio or video online
  231. ArticlesStandardize character width with CSS
  232. ArticlesSee all package versions in npm cli
  233. ArticlesTypeScript without TypeScript
  234. ArticlesEmulate iPhone & iPad in Safari
  235. ArticlesGet started with Preact
  236. ArticlesMake a POST request with fetch
  237. ArticlesWhy you shouldn't mutate parameters
  238. ArticlesRemove an item at a given index in JavaScript
  239. ArticlesTab focus not working in Safari?
  240. ArticlesDon't remove default focus styles, enhance them
  241. ArticlesThe Economics of Software Development, Part III
  242. ArticlesFix 'EMFILE: too many open files' error in Jest
  243. ArticlesUpdated TypeScript mega-course on Egghead.io
  244. ArticlesThe Economics of Software Development, Part II
  245. ArticlesAccess the home directory in Deno
  246. ArticlesThe Economics of Software Development, Part I
  247. ArticlesManage analysis paralysis while programming
  248. ArticlesBefore You Debug
  249. ArticlesBefore Debugging
  250. ArticlesIntro to "The Economics of Software Development"
  251. ArticlesNodemon for Deno
  252. ArticlesAdding images to my articles
  253. ArticlesParse argument aliases in Deno
  254. ArticlesAwait multiple promises in JavaScript
  255. ArticlesTypeScript mega-course on Egghead.io
  256. ArticlesSix video update
  257. ArticlesRead a json file in Deno
  258. ArticlesRead a json file in Node.js
  259. ArticlesPublishing my first YouTube video
  260. ArticlesHow to get the browser and version in JavaScript
  261. ArticlesLogging with Eleventy and Nunjucks
  262. ArticlesStore readable data
  263. ArticlesMagnoliaJS 2020 conference notes
  264. ArticlesHow to open the Dev Tools
  265. ArticlesTools for custom Slack emojis
  266. ArticlesLaws I Love
  267. ArticlesProgramming reads
  268. ArticlesGreat programming reads
  269. ArticlesFree to grow
  270. ArticlesHow to check npm scripts in current directory
  271. ArticlesWhat to include in every node module
  272. ArticlesHow to remove duplicates from an object array?
  273. ArticlesWrite a draft script for your SSG blog
  274. ArticlesA new Twitter handle
  275. ArticlesWhat default parameters do (and don't do)
  276. ArticlesReviewing 2019 goals
  277. Articles2019 into 2020
  278. ArticlesThe fastest way to look for object properties
  279. Articles"Stop Teaching Code" in JavaScript
  280. Articles5 Lessons from 10k open-source downloads
  281. ArticlesShould I snapshot my UI components?
  282. ArticlesLessons Learned at Abstractions 2019
  283. ArticlesEdit a previous commit message
  284. ArticlesArguments or parameters?
  285. ArticlesReasons to use prop-types
  286. ArticlesHow to pronounce my name
  287. ArticlesAdd event listener for class change
  288. ArticlesWhy I switched from Gatsby to Eleventy
  289. ArticlesStoring data in state vs. class variable
  290. ArticlesFilter out premium Medium articles
  291. ArticlesAdding accessibility checks to your React app
  292. ArticlesThree reasons to learn Python
  293. ArticlesJS Basics: Generate a random number
  294. ArticlesJS Basics: Ternary Operator
  295. ArticlesConvert class components to functions with React Hooks
  296. ArticlesAccessibility Wednesday
  297. Articles2018 into 2019
  298. ArticlesWhy a blog?
  299. ArticlesHow to create a render prop component