56,966 blogs · [ { "id": "01a0879d-5ece-7029-b410-d090297bb741", "title": "I launched on Product Hunt and all I got was spam email", "url": "https://lukeboyle.com/blog/i-launched-on-product-hunt-and-all-i-got-was-spam-email/", "published_at": "2026-09-01T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09029b50ffa", "title": "My Garmin Recorded the Workout. It Just Didn't Know What I Lifted.", "url": "https://lukeboyle.com/blog/enriching-garmin-strength-workouts-from-strong/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902a78a229", "title": "bb: A Bulletin Board for Agents", "url": "https://lukeboyle.com/blog/bb-agent-coordination/", "published_at": "2026-06-12T04:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902a91f5a4", "title": "Building SaaS with Two Users", "url": "https://lukeboyle.com/blog/building-saas-with-two-users/", "published_at": "2026-06-12T03:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902ad2a993", "title": "In-housing SaaS", "url": "https://lukeboyle.com/blog/in-housing-saas/", "published_at": "2026-06-12T02:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902ade0c48", "title": "hrs: The R&D Angle", "url": "https://lukeboyle.com/blog/hrs-the-rd-angle/", "published_at": "2026-06-12T01:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902b68adcb", "title": "Timesheets for AI Agents", "url": "https://lukeboyle.com/blog/timesheets-for-ai-agents/", "published_at": "2026-06-12T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902c11d9a8", "title": "Our God, the painter", "url": "https://lukeboyle.com/blog/our-god-the-painter/", "published_at": "2023-08-14T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902d022adb", "title": "In search of humanity", "url": "https://lukeboyle.com/blog/in-search-of-humanity/", "published_at": "2023-04-02T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902d3dac19", "title": "I must humble myself", "url": "https://lukeboyle.com/blog/i-must-humble-myself/", "published_at": "2023-03-24T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902d4c2800", "title": "Book review: Mencken's Conservatism by Benjamin Marks", "url": "https://lukeboyle.com/blog/mencken-conservatism-book-review/", "published_at": "2021-07-21T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902dd3768b", "title": "Book review: How an Economy Grows and Why it Crashes (2010)", "url": "https://lukeboyle.com/blog/how-an-economy-grows-why-it-crashes-review/", "published_at": "2021-06-08T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902e7964bf", "title": "Protecting yourself from inflation", "url": "https://lukeboyle.com/blog/protecting-yourself-from-inflation/", "published_at": "2021-04-24T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902e7b04a0", "title": "Sitemaps for Next.js static sites with dynamic routes", "url": "https://lukeboyle.com/blog/sitemaps-for-next-js-static-sites/", "published_at": "2020-08-15T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902f0e38f5", "title": "Do not trust Google", "url": "https://lukeboyle.com/blog/do-not-trust-google/", "published_at": "2020-08-01T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0902fdfc85b", "title": "OLAD (one lift a day) results so far", "url": "https://lukeboyle.com/blog/olad-results-so-far/", "published_at": "2020-07-25T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d090302fa4ba", "title": "Experimenting with OLAD (One lift a day)", "url": "https://lukeboyle.com/blog/experimenting-with-olad/", "published_at": "2020-04-10T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09031051808", "title": "Github Actions for web apps", "url": "https://lukeboyle.com/blog/github-actions-for-web-apps/", "published_at": "2019-08-12T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09031629a91", "title": "Software I actually believe in", "url": "https://lukeboyle.com/blog/software-i-actually-believe-in/", "published_at": "2018-12-21T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d090318e1d75", "title": "My Muscle Chef: A case study for iterative development", "url": "https://lukeboyle.com/blog/case-study-for-iterative-development/", "published_at": "2018-11-28T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09031e37ad4", "title": "Converting a WordPress site to a React static site", "url": "https://lukeboyle.com/blog/converting-wordpress-site-to-static/", "published_at": "2018-01-08T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d090328b6cf1", "title": "Project estimations made easy", "url": "https://lukeboyle.com/blog/project-estimations-made-easy/", "published_at": "2017-12-19T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09032f05f29", "title": "Responsive Definition Lists: Solved by flexbox", "url": "https://lukeboyle.com/blog/responsive-definition-lists-solved-by-flexbox/", "published_at": "2017-03-29T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09033622b9a", "title": "CSS Variables: A Case Study", "url": "https://lukeboyle.com/blog/css-variables-a-case-study/", "published_at": "2017-03-26T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09033d6ba90", "title": "CSS Buttons: Solved with Flexbox", "url": "https://lukeboyle.com/blog/css-buttons-solved-with-flexbox/", "published_at": "2017-03-09T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d09034749739", "title": "Functional Form Validation in JavaScript (aka: Inheriting bad JavaScript)", "url": "https://lukeboyle.com/blog/functional-form-validation-in-java-script-aka-inheriting-bad-java-script/", "published_at": "2017-01-30T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d090347e3101", "title": "Automating CSS regression testing with Argus Eyes (PhantomJS)", "url": "https://lukeboyle.com/blog/automating-css-regression-testing-with-argus-eyes-phantom-js/", "published_at": "2016-12-14T00:00:00+00:00" }, { "id": "01a0879d-5ece-7029-b410-d0903558331b", "title": "Local Storage Manager version 2.1 is out now", "url": "https://lukeboyle.com/blog/local-storage-manager-version-2-1-is-out-now/", "published_at": "2016-10-19T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaff9111fa5", "title": "Running Karma tests for Chrome in Travis CI", "url": "https://lukeboyle.com/blog/running-karma-tests-for-chrome-in-travis-ci/", "published_at": "2016-10-13T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaff9edbf05", "title": "JSX in Vue.JS", "url": "https://lukeboyle.com/blog/jsx-in-vue-js/", "published_at": "2016-09-25T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffa49ff45", "title": "React Material-UI touch events not firing", "url": "https://lukeboyle.com/blog/react-material-ui-touch-events-not-firing/", "published_at": "2016-09-24T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffae13d19", "title": "Dynamic Product Filtering in Shopify", "url": "https://lukeboyle.com/blog/dynamic-product-filtering-in-shopify/", "published_at": "2016-08-11T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffba409c6", "title": "Publishing React components to npm", "url": "https://lukeboyle.com/blog/publishing-react-components-to-npm/", "published_at": "2016-08-11T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffc2d9e82", "title": "Agander 2.0 is now out", "url": "https://lukeboyle.com/blog/agander-2-0-is-now-out/", "published_at": "2016-06-07T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffcb9dd4e", "title": "Google Calendar API - ColorId", "url": "https://lukeboyle.com/blog/google-calendar-api-color-id/", "published_at": "2016-04-20T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffd59c0a1", "title": "Agander 1.0 is now out", "url": "https://lukeboyle.com/blog/agander-1-0-is-now-out/", "published_at": "2016-04-11T00:00:00+00:00" }, { "id": "01a0879d-5ecf-7206-b767-dcaffe114be8", "title": "Google Task Javascript API - Invalid Value 400 Error", "url": "https://lukeboyle.com/blog/google-task-javascript-api-invalid-value-400-error/", "published_at": "2016-03-19T00:00:00+00:00" } ] posts Claim your blog
Back to lukeboyle.com
Blog · corpus.blog/blogs/lukeboyle.com/posts

lukeboyle.com

lukeboyle.com

2026

2023

2021

2020

2019

2018

2017

2016