41554 blogs · [ { "id": "01a087bd-bc5e-72b9-bd1e-865519020706", "title": "Bend Bike Rides", "url": "https://paularmstrong.dev/blog/2026/05/01/2026-05-01-bend-bike-rides/", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655197cd2e0", "title": "Code editors are very personal", "url": "https://paularmstrong.dev/blog/2024/03/02/2024-03-02-code-editors-are-personal/", "published_at": "2024-03-02T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865519f9c14f", "title": "Introducing oneRepo: the JavaScript & TypeScript monorepo toolchain for safe, strict, & fast development", "url": "https://paularmstrong.dev/blog/2024/02/27/2024-02-27-introducing-onerepo-the-javascript-typescript-monorepo-toolchain-for-safe-strict-fast-development/", "published_at": "2024-02-27T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551aea615d", "title": "Rust-based JavaScript linters have a major issue", "url": "https://paularmstrong.dev/blog/2024/02/23/2024-02-23-rust-based-javascript-linters-have-a-major-issue/", "published_at": "2024-02-23T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551afc2d9f", "title": "There can be only one Array", "url": "https://paularmstrong.dev/blog/2024/02/05/typescript-array-syntax-correct-format/", "published_at": "2024-02-05T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551bb8e7f2", "title": "Review: Things I wanted to see in JavaScript and Frontend development in 2023", "url": "https://paularmstrong.dev/blog/2024/01/25/javascript-and-frontend-things-to-see-in-2023-review/", "published_at": "2024-01-25T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551c8eaaa2", "title": "App Defaults 2023", "url": "https://paularmstrong.dev/blog/2023/11/27/apps-tools-for-2023/", "published_at": "2023-11-27T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551d42c87b", "title": "We use type safety not on preference, but because we want to make money", "url": "https://paularmstrong.dev/blog/2023/09/14/we-use-type-safety-not-on-preference-but-because-we-want-to-make-money/", "published_at": "2023-09-14T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551dd1e0d3", "title": "Import path aliasing is a crutch for poor architecture", "url": "https://paularmstrong.dev/blog/2023/08/29/import-path-aliasing-is-a-crutch-for-poor-architecture/", "published_at": "2023-08-29T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551eab687c", "title": "The line between writing functions yourself and using open source modules", "url": "https://paularmstrong.dev/blog/2023/08/14/the-line-between-writing-functions-yourself-and-using-open-source-modules/", "published_at": "2023-08-14T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86551f29e931", "title": "A clean codebase is a happy codebase", "url": "https://paularmstrong.dev/blog/2023/03/24/a-clean-codebase-is-a-happy-codebase/", "published_at": "2023-03-24T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552023b4f8", "title": "Why the frontend world ignores Web Components", "url": "https://paularmstrong.dev/blog/2023/03/11/why-we-do-not-write-web-components/", "published_at": "2023-03-11T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655203e28c2", "title": "Things I want to see in JavaScript and Frontend development in 2023", "url": "https://paularmstrong.dev/blog/2023/01/20/javascript-and-frontend-things-to-see-in-2023/", "published_at": "2023-01-20T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655207f46bb", "title": "Tips for healthy and useful meetings in tech", "url": "https://paularmstrong.dev/blog/2022/12/19/healthy-meetings-in-tech/", "published_at": "2022-12-19T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865520a104ab", "title": "Lessons learned: how I’d rebuild a social web app like Twitter today", "url": "https://paularmstrong.dev/blog/2022/11/28/lessons-learned-how-i-would-rebuild-twitter-today/", "published_at": "2022-11-28T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865521075b39", "title": "My biggest technical mistakes (so far)", "url": "https://paularmstrong.dev/blog/2022/11/22/my-biggest-technical-mistakes/", "published_at": "2022-11-22T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552173e672", "title": "Using client hints to prevent FARTs with website auto dark mode themes", "url": "https://paularmstrong.dev/blog/2022/11/21/client-hint-headers-for-dark-mode-theme/", "published_at": "2022-11-21T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865521afcaac", "title": "CSS box-sizing: border-box", "url": "https://paularmstrong.dev/blog/2022/11/10/css-box-sizing-border-box/", "published_at": "2022-11-10T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865521e3c77a", "title": "The case for Astro", "url": "https://paularmstrong.dev/blog/2022/11/09/the-case-for-astro/", "published_at": "2022-11-09T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655221c6f4c", "title": "Mourning the loss of Twitter", "url": "https://paularmstrong.dev/blog/2022/11/04/mourning-twitter/", "published_at": "2022-11-04T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552232f55f", "title": "DIY Photo Booth: the nerdy details", "url": "https://paularmstrong.dev/blog/2022/10/26/diy-photobooth-nerdy-details/", "published_at": "2022-10-26T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552266483c", "title": "Current tool chest", "url": "https://paularmstrong.dev/blog/2022/10/18/current-tool-chest/", "published_at": "2022-10-18T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655229bbdc7", "title": "Technical design starter template", "url": "https://paularmstrong.dev/blog/2022/10/14/tech-design-template/", "published_at": "2022-10-14T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865522e513b2", "title": "Creating a modern wedding website in 2022 Part 2: Setting up the repository and frameworks", "url": "https://paularmstrong.dev/blog/2022/10/13/custom-wedding-website-part-2/", "published_at": "2022-10-13T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655236af48c", "title": "New site, who dis?", "url": "https://paularmstrong.dev/blog/2022/10/12/new-site-who-dis/", "published_at": "2022-10-12T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552394a7a4", "title": "DIY photobooth", "url": "https://paularmstrong.dev/blog/2022/10/11/diy-photobooth/", "published_at": "2022-10-11T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552438f26d", "title": "Hacking express middleware to automatically capture request timeouts", "url": "https://paularmstrong.dev/blog/2022/09/26/hacking-express-nodejs-timeout-middleware/", "published_at": "2022-09-26T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865524719580", "title": "Mass shootings", "url": "https://paularmstrong.dev/blog/2022/08/29/shootings/", "published_at": "2022-08-29T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865524ca0233", "title": "Creating a modern wedding website in 2022 Part 1: Choosing the tools", "url": "https://paularmstrong.dev/blog/2022/06/04/custom-wedding-website-part-1/", "published_at": "2022-06-04T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865525c870cc", "title": "Creating a modern wedding website in 2022: Introduction", "url": "https://paularmstrong.dev/blog/2022/06/04/custom-wedding-website/", "published_at": "2022-06-04T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865526927bb3", "title": "Nine years sober", "url": "https://paularmstrong.dev/blog/2022/05/17/nine-years-sober/", "published_at": "2022-05-17T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865527553032", "title": "Abandoning AMP", "url": "https://paularmstrong.dev/blog/2021/11/08/abandoning-amp/", "published_at": "2021-11-08T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-865527704875", "title": "Taking a break from open source", "url": "https://paularmstrong.dev/blog/2021/10/24/2021-10-24-open-source-break/", "published_at": "2021-10-24T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552850a86f", "title": "Safe Express.js HTML responses without a templating engine", "url": "https://paularmstrong.dev/blog/2020/12/22/javascript-html-templating/", "published_at": "2020-12-22T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-86552887f05a", "title": "Rubber Ducky Twitch Bot", "url": "https://paularmstrong.dev/blog/2020/11/16/ducky/", "published_at": "2020-11-16T00:00:00+00:00" }, { "id": "01a087bd-bc5e-72b9-bd1e-8655296cf017", "title": "Git helpers that I can no longer live without", "url": "https://paularmstrong.dev/blog/2020/05/15/git-helpers/", "published_at": "2020-05-15T00:00:00+00:00" }, { "id": "01a087bd-bc5f-726c-95ff-cfb991e4653c", "title": "Twitter Lite and High Performance React Progressive Web Apps at Scale", "url": "https://paularmstrong.dev/blog/2017/04/11/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale/", "published_at": "2017-04-11T00:00:00+00:00" } ] posts Claim your blog
Back to paularmstrong.dev
Blog · corpus.blog/blogs/paularmstrong.dev/posts

paularmstrong.dev

paularmstrong.dev

2026

2024

2023

2022

2021

2020

2017