{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_tag","url":"https://ejfox.com/blog/tag/programming","json_url":"https://ejfox.com/blog/tag/programming.json","generator":"ejfox.com/json-twin@1","data":{"tag":"programming","count":5,"posts":[{"slug":"2025/personal-apis","title":"Building Personal APIs","date":"2025-05-03T22:17:43.000Z","type":"post","dek":"In which the author steals his data back from various tools and APIs and uses them to build his own panopticon-for-one","modified":"2025-05-23T05:29:38.000Z","tags":["api","quantifiedself","programming","personal"],"toc":[{"text":"Building Personal APIs","slug":"building-personal-apis","level":"h2","children":[{"text":"‍♂ Health & Fitness","slug":"-health--fitness","level":"h3","children":[]},{"text":"Gaming & Skills","slug":"gaming--skills","level":"h3","children":[]},{"text":"Development","slug":"development","level":"h3","children":[]},{"text":"📸 Creative","slug":"-creative","level":"h3","children":[]},{"text":"Entertainment","slug":"entertainment","level":"h3","children":[]},{"text":"⏰ Productivity","slug":"-productivity","level":"h3","children":[]},{"text":"Writing","slug":"writing","level":"h3","children":[]}]}],"metadata":{"date":"2025-05-03T22:17:43.000Z","modified":"2025-05-23T05:29:38.000Z","dek":"In which the author steals his data back from various tools and APIs and uses them to build his own panopticon-for-one","tags":["api","quantifiedself","programming","personal"],"words":922,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"Building Personal APIs","slug":"building-personal-apis","level":"h2","children":[{"text":"‍♂ Health & Fitness","slug":"-health--fitness","level":"h3","children":[]},{"text":"Gaming & Skills","slug":"gaming--skills","level":"h3","children":[]},{"text":"Development","slug":"development","level":"h3","children":[]},{"text":"📸 Creative","slug":"-creative","level":"h3","children":[]},{"text":"Entertainment","slug":"entertainment","level":"h3","children":[]},{"text":"⏰ Productivity","slug":"-productivity","level":"h3","children":[]},{"text":"Writing","slug":"writing","level":"h3","children":[]}]}],"type":"post","slug":"2025/personal-apis"}},{"slug":"projects/coach-artie","title":"Coach Artie","date":"2023-03-21T04:00:00.000Z","type":"post","modified":"2025-08-26T19:52:50.000Z","tags":["programming","ai","product","nodejs"],"toc":[{"text":"Version one: a studio assistant","slug":"version-one-a-studio-assistant","level":"h2","children":[]},{"text":"Version two: one brain, many doors","slug":"version-two-one-brain-many-doors","level":"h2","children":[]},{"text":"What he remembers","slug":"what-he-remembers","level":"h2","children":[]},{"text":"The showcase site","slug":"the-showcase-site","level":"h2","children":[]}],"metadata":{"title":"Coach Artie","date":"2023-03-21T04:00:00.000Z","category":"Tools","featured":false,"modified":"2025-08-26T19:52:50.000Z","url":"https://github.com/room302studio/coachartie2","tech":["Node.js","TypeScript","Discord.js","OpenRouter","Redis","SQLite"],"state":"evolved","ai-involvement":"ai-enhanced","context":"collaborative","tags":["programming","ai","product","nodejs"],"about":"[[project-notes/coach-artie]]","words":294,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":4,"codeBlocks":0,"headers":{"h2":4},"toc":[{"text":"Version one: a studio assistant","slug":"version-one-a-studio-assistant","level":"h2","children":[]},{"text":"Version two: one brain, many doors","slug":"version-two-one-brain-many-doors","level":"h2","children":[]},{"text":"What he remembers","slug":"what-he-remembers","level":"h2","children":[]},{"text":"The showcase site","slug":"the-showcase-site","level":"h2","children":[]}],"type":"post","slug":"projects/coach-artie"}},{"slug":"projects/showtouch","title":"showtouch","date":"2024-10-01T04:00:00.000Z","type":"post","tags":["cli","terminal","programming"],"toc":[],"metadata":{"title":"showtouch","date":"2024-10-01T04:00:00.000Z","category":"Tools","featured":false,"url":"https://github.com/ejfox/showtouch","tech":["Python","ASCII Art","Terminal"],"state":"prototype","ai-involvement":"ai-assisted","tags":["cli","terminal","programming"],"words":92,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/showtouch"}},{"slug":"reading/Drasner-Engineering Management for the Rest of Us","title":"Engineering Management for the Rest of Us","date":"2025-08-21T18:44:29.000Z","type":"post","modified":"2025-08-24T22:31:22.000Z","tags":["book","programming","management"],"toc":[{"text":"Engineering Management for the Rest of Us","slug":"engineering-management-for-the-rest-of-us","level":"h2","children":[{"text":"Highlights","slug":"highlights","level":"h3","children":[]},{"text":"Metadata","slug":"metadata","level":"h3","children":[]}]}],"metadata":{"kindle-sync":{"bookId":"43898","title":"Engineering Management for the Rest of Us","author":"Sarah Drasner","asin":"B0BGYVDX35","lastAnnotatedDate":"2024-12-15","bookImageUrl":"https://m.media-amazon.com/images/I/910mP4Y5dSL._SY160.jpg","highlightsCount":6},"date":"2025-08-21T18:44:29.000Z","modified":"2025-08-24T22:31:22.000Z","tags":["book","programming","management"],"words":305,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":1,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"Engineering Management for the Rest of Us","slug":"engineering-management-for-the-rest-of-us","level":"h2","children":[{"text":"Highlights","slug":"highlights","level":"h3","children":[]},{"text":"Metadata","slug":"metadata","level":"h3","children":[]}]}],"type":"post","slug":"reading/Drasner-Engineering Management for the Rest of Us"}},{"slug":"week-notes/2025-07","title":"2025 07","date":"2025-02-11T03:22:47.000Z","type":"post","dek":"In which a gentleman programmer, beset by half-finished endeavors and haunted by the spectral presence of incomplete repositories, finds momentary satisfaction in the precise measurement of his typing velocity,","modified":"2025-02-16T17:18:59.000Z","tags":["qgis","mapping","programming","personal"],"toc":[],"metadata":{"date":"2025-02-11T03:22:47.000Z","modified":"2025-02-16T17:18:59.000Z","dek":"In which a gentleman programmer, beset by half-finished endeavors and haunted by the spectral presence of incomplete repositories, finds momentary satisfaction in the precise measurement of his typing velocity,","tags":["qgis","mapping","programming","personal"],"words":952,"images":16,"imageDetails":{"total":16,"cloudinary":16,"withDimensions":0},"links":17,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"week-notes/2025-07"}}]},"_links":{"self":"https://ejfox.com/blog/tag/programming.json","html":"https://ejfox.com/blog/tag/programming","tag_page":"/tag/programming.json"}}