41554 blogs · [ { "id": "01a08723-e397-7297-bd80-266e258baccc", "title": "On moving from implicit to explicit coupling", "url": "https://alexcarpenter.me/notes/2025-06-24-1/", "published_at": "2025-06-24T12:49:00+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2671e21d", "title": null, "url": "https://alexcarpenter.me/notes/2025-06-21-1/", "published_at": "2025-06-21T11:59:56+00:00" }, { "id": "01a08723-e397-7297-bd80-266e270f44c2", "title": "Handle all potential cases in a switch statement", "url": "https://alexcarpenter.me/notes/2025-06-18-4/", "published_at": "2025-06-18T12:08:25+00:00" }, { "id": "01a08723-e397-7297-bd80-266e27aed762", "title": "Tiny polyfill for CSS scroll driven animations", "url": "https://alexcarpenter.me/notes/2025-06-18-3/", "published_at": "2025-06-18T12:04:20+00:00" }, { "id": "01a08723-e397-7297-bd80-266e284185fd", "title": "The Prettify Helper", "url": "https://alexcarpenter.me/notes/2025-06-18-2/", "published_at": "2025-06-18T11:55:18+00:00" }, { "id": "01a08723-e397-7297-bd80-266e28bd97a1", "title": null, "url": "https://alexcarpenter.me/notes/2025-06-18-1/", "published_at": "2025-06-18T11:43:51+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2953f363", "title": "Evil Martions Harmonizer", "url": "https://alexcarpenter.me/notes/2025-05-26-1/", "published_at": "2025-05-26T16:25:57+00:00" }, { "id": "01a08723-e397-7297-bd80-266e29ff3672", "title": "never just", "url": "https://alexcarpenter.me/notes/2025-05-14-1/", "published_at": "2025-05-14T13:10:48+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2af56441", "title": "CSS Spring Easing Generator", "url": "https://alexcarpenter.me/notes/2025-05-02-1/", "published_at": "2025-05-02T11:32:39+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2af7012c", "title": "useMaskedScroll hook", "url": "https://alexcarpenter.me/notes/2025-05-01-1/", "published_at": "2025-05-01T12:19:09+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2b973ead", "title": null, "url": "https://alexcarpenter.me/notes/2025-04-30-1/", "published_at": "2025-04-30T12:04:10+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2ba796c2", "title": "Adaptive dotted pattern", "url": "https://alexcarpenter.me/notes/2025-04-19-2/", "published_at": "2025-04-19T11:29:11+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2c9c0da4", "title": "The Wet Codebase", "url": "https://alexcarpenter.me/notes/2025-04-19-1/", "published_at": "2025-04-19T11:24:05+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2d9632f0", "title": "OKLCH in CSS: why we moved from RGB and HSL", "url": "https://alexcarpenter.me/notes/2025-04-18-2/", "published_at": "2025-04-18T12:02:53+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2e740641", "title": null, "url": "https://alexcarpenter.me/notes/2025-04-18-1/", "published_at": "2025-04-18T11:59:33+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2f10d57d", "title": null, "url": "https://alexcarpenter.me/notes/2025-04-17-1/", "published_at": "2025-04-17T12:18:43+00:00" }, { "id": "01a08723-e397-7297-bd80-266e2f5f94bf", "title": null, "url": "https://alexcarpenter.me/notes/2025-04-16-1/", "published_at": "2025-04-16T12:45:17+00:00" }, { "id": "01a08723-e397-7297-bd80-266e304ef4ed", "title": null, "url": "https://alexcarpenter.me/notes/2025-04-15-1/", "published_at": "2025-04-15T12:20:41+00:00" }, { "id": "01a08723-e397-7297-bd80-266e309d451c", "title": "Create a list of links from an array using Intl.ListFormat with formatToParts", "url": "https://alexcarpenter.me/notes/2025-04-14-2/", "published_at": "2025-04-15T00:50:41+00:00" }, { "id": "01a08723-e397-7297-bd80-266e30ca25e8", "title": "Animate height from 0 to auto", "url": "https://alexcarpenter.me/notes/2025-04-14-1/", "published_at": "2025-04-14T16:41:36+00:00" }, { "id": "01a08723-e397-7297-bd80-266e30dbb32e", "title": "Write code that is easy to delete, not easy to extend", "url": "https://alexcarpenter.me/notes/2025-04-13-1/", "published_at": "2025-04-14T00:14:22+00:00" }, { "id": "01a08723-e397-7297-bd80-266e31535c16", "title": "Naming things in design systems–and why it’s the worst", "url": "https://alexcarpenter.me/notes/2025-03-22-1/", "published_at": "2025-03-22T23:25:15+00:00" }, { "id": "01a08723-e398-7280-8c3e-b9d136e52c6f", "title": "Sanding UI", "url": "https://alexcarpenter.me/notes/2025-02-25-1/", "published_at": "2025-02-25T23:26:08+00:00" }, { "id": "01a08723-e398-7280-8c3e-b9d1378e4039", "title": null, "url": "https://alexcarpenter.me/notes/2025-02-19-2/", "published_at": "2025-02-19T21:37:34+00:00" }, { "id": "01a08723-e398-7280-8c3e-b9d137c52ffa", "title": "The \"everything bagel\" of components", "url": "https://alexcarpenter.me/notes/2025-02-17-1/", "published_at": "2025-02-17T23:21:04+00:00" }, { "id": "01a08723-e398-7280-8c3e-b9d138a6a51d", "title": "Just use children", "url": "https://alexcarpenter.me/notes/2024-12-05-1/", "published_at": "2024-12-05T23:25:15+00:00" }, { "id": "01a0b5e6-8136-7022-af7b-74f2776a698f", "title": "Alex Carpenter", "url": "https://alexcarpenter.me/posts/app-defaults", "published_at": "2023-11-28T21:40:00+00:00" } ] posts Claim your blog
Back to Alex Carpenter
Blog · corpus.blog/blogs/alexcarpenter.me/posts

Alex Carpenter

alexcarpenter.me

2025

2024

2023