56,966 blogs · [ { "id": "01a0878a-732d-70ad-a5d4-4e407f9cdb95", "title": "It takes 5 years to be an overnight success", "url": "https://www.jameskerr.blog/posts/2026/overnight-success/", "published_at": "2026-08-06T00:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408082552f", "title": "Mental tricks to keep working on my work", "url": "https://www.jameskerr.blog/posts/2026/mental-tricks-to-keep-working-on-my-work/", "published_at": "2026-05-04T00:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4080a6aa75", "title": "I Will Not Become My Heros", "url": "https://www.jameskerr.blog/posts/2026/i-will-not-become-my-heros/", "published_at": "2026-02-23T05:24:25+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40811d23ce", "title": "I Lost My Airpods", "url": "https://www.jameskerr.blog/posts/2026/i-lost-my-airpods/", "published_at": "2026-02-09T18:01:50+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40820ba3ea", "title": "It's hard to deny the simple beauty of a function", "url": "https://www.jameskerr.blog/posts/2025/mostly-functions/", "published_at": "2025-12-02T18:08:36+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4082364d74", "title": "DOM IDs are a real pain in my apps", "url": "https://www.jameskerr.blog/posts/2025/refs-rails/", "published_at": "2025-09-17T17:42:40+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4082c3f390", "title": "When you put yourself out there, you’ll feel exposed", "url": "https://www.jameskerr.blog/posts/2025/exposed/", "published_at": "2025-07-25T03:19:32+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4082febf3a", "title": "SuperDB Website Build Review", "url": "https://www.jameskerr.blog/posts/superdb-website-build-review/", "published_at": "2025-02-13T18:57:27+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4083161284", "title": "useStateObject: A Simple, Convenient API Around useState", "url": "https://www.jameskerr.blog/posts/use-state-object/", "published_at": "2024-08-15T23:34:22+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4083b9feb7", "title": "The 3 Types of CSS Utility Classes", "url": "https://www.jameskerr.blog/posts/3-types-of-css-utility-classes/", "published_at": "2024-07-02T00:33:58+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40849772ad", "title": "Ship That Code • Publish That Post", "url": "https://www.jameskerr.blog/posts/ship-that-code-publish-that-post/", "published_at": "2024-06-26T18:38:31+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4085770d53", "title": "How to Debug NodeJS with Breakpoints in VSCode", "url": "https://www.jameskerr.blog/posts/debug-node-with-breakpoints-vscode/", "published_at": "2024-06-13T22:29:18+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4085ed1d45", "title": "The One Thing Missing in Every Budget App: Spending Commitments", "url": "https://www.jameskerr.blog/posts/budget-apps-missing-spending-commitment/", "published_at": "2024-06-02T15:34:44+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40868b0801", "title": "Fix for Kamal Deploy Assets Not Updating", "url": "https://www.jameskerr.blog/posts/fix-for-kamal-deploy-assets-not-updating/", "published_at": "2024-04-23T17:31:32+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40876f05b0", "title": "How to Set Output Values in Github Actions", "url": "https://www.jameskerr.blog/posts/how-to-set-output-in-github-actions/", "published_at": "2024-04-22T21:15:10+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40882b5d96", "title": "Responsive Sizing for React Arborist Tree Component", "url": "https://www.jameskerr.blog/posts/responsive-sizing-for-react-arborist-tree-component/", "published_at": "2024-04-17T17:00:47+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4088e9e4fb", "title": "Cache the Result of a JavaScript Getter Method", "url": "https://www.jameskerr.blog/posts/cache-the-result-of-a-javascript-getter-method/", "published_at": "2024-04-16T19:49:54+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4089e90937", "title": "The Friend Is You", "url": "https://www.jameskerr.blog/posts/the-friend-is-you/", "published_at": "2024-04-16T14:46:19+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408a42942d", "title": "Finally Understanding How Array.sort(comparator) Works", "url": "https://www.jameskerr.blog/posts/javascript-sort-comparators/", "published_at": "2024-03-28T18:39:07+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408a650d41", "title": "Using @monaco-editor/react in Electron without Internet Connection", "url": "https://www.jameskerr.blog/posts/offline-monaco-editor-in-electron/", "published_at": "2024-03-27T23:58:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408ab34e28", "title": "Transitions All Settled", "url": "https://www.jameskerr.blog/posts/all-transitions-settled/", "published_at": "2024-03-06T04:26:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408ad655aa", "title": "There Are Only Two Types of Transactions", "url": "https://www.jameskerr.blog/posts/there-are-only-two-types-of-transactions/", "published_at": "2023-11-08T17:40:46+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408b6acfc6", "title": "Against Single Element React Components", "url": "https://www.jameskerr.blog/posts/against-single-element-react-components/", "published_at": "2023-11-06T23:51:23+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408bcbc39f", "title": "How to Optimize Your Hugo Blogging Workflow on Mac", "url": "https://www.jameskerr.blog/posts/how-to-optimize-your-hugo-blogging-workflow-on-mac/", "published_at": "2023-10-27T16:22:36+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408c99c786", "title": "A Better Goal Than Sinless Perfection", "url": "https://www.jameskerr.blog/posts/a-better-goal-than-sinless-perfection/", "published_at": "2023-10-22T20:46:13+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408cd147c8", "title": "I Have Enough", "url": "https://www.jameskerr.blog/posts/i-have-enough/", "published_at": "2023-10-17T16:28:23+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408d91fc7f", "title": "Company Culture & Church Community", "url": "https://www.jameskerr.blog/posts/company-culture-church-community/", "published_at": "2023-10-12T18:06:12+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408dc9e6d6", "title": "Let It Flow", "url": "https://www.jameskerr.blog/posts/let-it-flow/", "published_at": "2023-10-02T19:02:50+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408df10a1f", "title": "How to Pipe a NodeJS Readable Stream into a Child Process", "url": "https://www.jameskerr.blog/posts/pipe-nodejs-readable-stream-into-child-process/", "published_at": "2023-09-22T17:00:27+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408ee2909a", "title": "Waiting for a Comet", "url": "https://www.jameskerr.blog/posts/waiting-for-a-comet/", "published_at": "2023-09-20T16:53:06+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408f32363a", "title": "A Battle of Wit", "url": "https://www.jameskerr.blog/posts/a-battle-of-wit/", "published_at": "2023-09-17T00:44:44+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e408fff3e8c", "title": "Partially Controlled Components: A Declarative Design Pattern in React", "url": "https://www.jameskerr.blog/posts/partially-controlled-react-components/", "published_at": "2023-08-01T20:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40900f618d", "title": "Others May Know More", "url": "https://www.jameskerr.blog/posts/others-may-know-more/", "published_at": "2023-07-10T11:13:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e409091881f", "title": "It’s Good to Wonder About Mysteries", "url": "https://www.jameskerr.blog/posts/its-good-to-wonder-about-mysteries/", "published_at": "2023-06-29T17:15:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40915d1d2e", "title": "React Hook for Avoiding Flash of Empty UI While Data Transitions", "url": "https://www.jameskerr.blog/posts/use-data-transition/", "published_at": "2023-06-27T18:55:19+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40923a6c36", "title": "Confronting a Man at the Playground", "url": "https://www.jameskerr.blog/posts/playground-confrontation/", "published_at": "2023-06-21T19:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4092c24e9e", "title": "Persisting the Human Experience", "url": "https://www.jameskerr.blog/posts/compressing-experience/", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4092ec5ffe", "title": "Joshua Tree Trip", "url": "https://www.jameskerr.blog/posts/joshua-tree-trip/", "published_at": "2023-05-31T00:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e409304164f", "title": "Jet Fuel", "url": "https://www.jameskerr.blog/posts/jet-fuel/", "published_at": "2023-05-05T23:10:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e409350b789", "title": "5 Tricks for Taking Great Photos", "url": "https://www.jameskerr.blog/posts/tricks-for-taking-great-photos/", "published_at": "2023-05-04T19:39:05+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40944c2a2e", "title": "It’s a Gift for Me to Be Angry", "url": "https://www.jameskerr.blog/posts/its-a-gift-for-me-to-be-angry/", "published_at": "2023-04-03T21:43:39+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4094efe231", "title": "13 Decisions to Make Before Publishing JavaScript to NPM", "url": "https://www.jameskerr.blog/posts/13-decisions-to-make-before-publishing-to-npm/", "published_at": "2023-03-30T16:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4095401431", "title": "Netflix Does Not Have My Best Interest", "url": "https://www.jameskerr.blog/posts/netflix-does-not-have-my-best-interest/", "published_at": "2023-03-24T01:59:18+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4095ffe6a0", "title": "Embedded Divinity", "url": "https://www.jameskerr.blog/posts/embedded-divinity/", "published_at": "2023-03-22T17:52:26+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e409625b18c", "title": "Adults Don't Share", "url": "https://www.jameskerr.blog/posts/adults-dont-share/", "published_at": "2022-12-23T16:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4096c9f66f", "title": "TypeScript Classes Are Giving Me Carpal Tunnel", "url": "https://www.jameskerr.blog/posts/typescript-classes-verbose/", "published_at": "2022-12-21T17:37:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e4096d39b81", "title": "Sharing Steps in Github Action Workflows", "url": "https://www.jameskerr.blog/posts/sharing-steps-in-github-action-workflows/", "published_at": "2022-06-13T20:00:00+00:00" }, { "id": "01a0878a-732d-70ad-a5d4-4e40973d8d6d", "title": "How to useRef and forwardRef in React", "url": "https://www.jameskerr.blog/posts/react-useref-and-forward-ref/", "published_at": "2022-05-03T07:00:00+00:00" } ] posts Claim your blog
Back to jameskerr.blog
Blog · corpus.blog/blogs/jameskerr.blog/posts

jameskerr.blog

jameskerr.blog

2026

2025

2024

2023

2022