41554 blogs · [ { "id": "01a08739-df45-7022-840c-e2da6371d0d7", "title": "Well done AI, that’s the end of the honesty boxes", "url": "https://benfrain.com/well-done-ai-thats-the-end-of-the-honest-boxes/", "published_at": "2026-08-17T09:44:51+00:00" }, { "id": "01a08739-df45-7022-840c-e2da64368504", "title": "The Beginnings, by Rudyard Kipling", "url": "https://benfrain.com/the-beginnings-by-rudyard-kipling/", "published_at": "2026-08-05T20:17:16+00:00" }, { "id": "01a08739-df45-7022-840c-e2da64fbeff8", "title": "So, you want a React modal that uses the element and transitions in AND out?", "url": "https://benfrain.com/a-react-modal-that-uses-the-dialog-element-and-transitions-in-and-out/", "published_at": "2026-04-14T14:47:00+00:00" }, { "id": "01a08739-df45-7022-840c-e2da65971967", "title": "Scroll indicators on tables with background colours using animation-timeline", "url": "https://benfrain.com/scroll-indicators-on-tables-with-background-colours-with-animation-timeline/", "published_at": "2026-02-13T10:27:49+00:00" }, { "id": "01a08739-df45-7022-840c-e2da66160101", "title": "Review: SoundPEATS Clip1 Open ear clip-on headphones", "url": "https://benfrain.com/review-soundpeats-clip1-open-ear-clip-on-headphones/", "published_at": "2026-01-28T22:49:09+00:00" }, { "id": "01a08739-df45-7022-840c-e2da66295022", "title": "VS Code – highlight just the active indent guide", "url": "https://benfrain.com/vs-code-highlight-just-the-active-indent-guide/", "published_at": "2026-01-08T22:39:57+00:00" }, { "id": "01a08739-df45-7022-840c-e2da663c3efc", "title": "Review: MoErgo Go60, a split ergonomic and fully programmable keyboard", "url": "https://benfrain.com/review-moergo-go60-a-split-ergonomic-and-fully-programmable-keyboard/", "published_at": "2025-12-06T18:35:20+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6734c41a", "title": "Review: Kinesis mWave mechanical ergonomic and programmable keyboard", "url": "https://benfrain.com/review-kinesis-mwave-mechanical-ergonomic-and-programmable-keyboard/", "published_at": "2025-12-06T17:34:11+00:00" }, { "id": "01a08739-df45-7022-840c-e2da681dbd2e", "title": "iOS26 Safari theme-color/tab-tinting with fixed position elements is a mess", "url": "https://benfrain.com/ios26-safari-theme-color-tab-tinting-with-fixed-position-elements/", "published_at": "2025-11-16T15:16:49+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6828de95", "title": "New Book: Responsive Web Design with HTML5 and CSS, 5th Edition", "url": "https://benfrain.com/new-book-responsive-web-design-with-html5-and-css-5th-edition/", "published_at": "2025-10-20T11:42:20+00:00" }, { "id": "01a08739-df45-7022-840c-e2da68f1af48", "title": "Use @supports with a proxy feature/value for features you can’t test for (@starting-style)", "url": "https://benfrain.com/use-supports-with-a-proxy-feature-value-for-features-you-cant-test-for-starting-style/", "published_at": "2025-06-18T09:18:06+00:00" }, { "id": "01a08739-df45-7022-840c-e2da69555e16", "title": "First adventures in View Transitions", "url": "https://benfrain.com/first-adventures-in-view-transitions/", "published_at": "2025-05-12T19:39:40+00:00" }, { "id": "01a08739-df45-7022-840c-e2da69aa18f3", "title": "Review: Benq Screenbar Pro and Halo lightbars. The kit you never knew you needed!", "url": "https://benfrain.com/review-benq-screenbar-pro-and-halo-lightbars-the-kit-you-never-knew-you-needed/", "published_at": "2025-02-12T22:39:09+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6a6f1c65", "title": "Center items in a container, and make then left aligned when they overflow", "url": "https://benfrain.com/center-items-in-a-container-and-make-then-left-aligned-when-they-overflow/", "published_at": "2025-01-24T17:13:17+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6b2fc036", "title": "A single element CSS donut timer/countdown timer, that can sit on any background", "url": "https://benfrain.com/a-single-element-css-donut-timer-countdown-timer-that-can-sit-on-any-background/", "published_at": "2025-01-07T16:08:47+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6b4a5bf6", "title": "Review: Open Ear Headphones – Bose Open Ultra v Huawei FreeClip", "url": "https://benfrain.com/review-open-ear-headphones-bose-open-ultra-v-huawei-freeclip/", "published_at": "2024-12-16T20:02:24+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6c0c5df7", "title": "In search of the perfect autocomplete for CSS", "url": "https://benfrain.com/in-search-of-the-perfect-autocomplete-for-css/", "published_at": "2024-11-05T10:35:52+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6c90d911", "title": "Managing multiple versions of node, without NVM or additional tools", "url": "https://benfrain.com/managing-multiple-versions-of-node-without-nvm-or-additional-tools/", "published_at": "2024-10-21T10:09:56+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6d359d9c", "title": "Review: Keychron Q14 Max Alice 96 Key mechanical keyboard", "url": "https://benfrain.com/review-keychron-q14-max-alice-96-key-mechanical-keyboard/", "published_at": "2024-09-24T17:20:46+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6d55f583", "title": "NEW VIDEO COURSE: Responsive Web Design with HTML5 and CSS", "url": "https://benfrain.com/new-video-course-responsive-web-design-with-html5-and-css/", "published_at": "2024-08-11T15:51:42+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6d5bf507", "title": "Is CSS Grid really slower than Flexbox?", "url": "https://benfrain.com/is-css-grid-really-slower-than-flexbox/", "published_at": "2024-08-05T17:44:33+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6de267a7", "title": "Review: Advantage360 Pro Signature Edition 2024 mechanical ergonomic keyboard", "url": "https://benfrain.com/review-advantage360-pro-signature-edition-2024-mechanical-ergonomic-keyboard/", "published_at": "2024-07-24T22:24:10+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6e88e6bb", "title": "More Keys or Fewer Keys for mechanical keyboards", "url": "https://benfrain.com/more-keys-or-fewer-keys-for-mechanical-keyboards/", "published_at": "2024-06-30T21:41:22+00:00" }, { "id": "01a08739-df45-7022-840c-e2da6f873102", "title": "Yes! You can use position: sticky and overflow together", "url": "https://benfrain.com/yes-you-can-use-position-sticky-and-overflow-together/", "published_at": "2024-06-20T11:22:00+00:00" }, { "id": "01a08739-df45-7022-840c-e2da706825d0", "title": "Neovim – how to do project-wide find and replace?", "url": "https://benfrain.com/neovim-how-to-do-project-wide-find-and-replace/", "published_at": "2024-04-12T20:43:49+00:00" }, { "id": "01a08739-df45-7022-840c-e2da7080d75b", "title": "Review: Keyboardio Model 100, split, wooden, mechanical keyboard", "url": "https://benfrain.com/review-keyboardio-model-100-split-wooden-mechanical-keyboard/", "published_at": "2024-04-11T22:07:27+00:00" }, { "id": "01a08739-df45-7022-840c-e2da717cb32c", "title": "Struggling to learn SwiftUI", "url": "https://benfrain.com/struggling-to-learn-swiftui/", "published_at": "2024-02-15T15:36:04+00:00" }, { "id": "01a08739-df45-7022-840c-e2da726a4efb", "title": "How to create rounded gradient borders with any background in CSS", "url": "https://benfrain.com/how-to-create-rounded-gradient-borders-with-any-background-in-css/", "published_at": "2024-02-05T14:44:49+00:00" }, { "id": "01a08739-df45-7022-840c-e2da72934c4d", "title": "How to get equal size icons in the cmp completion menu of Neovim with Kitty terminal", "url": "https://benfrain.com/how-to-get-equal-size-icons-in-the-cmp-completion-menu-of-neovim-with-kitty-terminal/", "published_at": "2024-01-17T21:59:32+00:00" }, { "id": "01a08739-df46-7315-9306-418bcff8e035", "title": "Review: Dygma Defy, split, mechanical, programmable ergonomic keyboard", "url": "https://benfrain.com/review-dygma-defy-split-mechanical-programmable-ergonomic-keyboard/", "published_at": "2024-01-10T21:40:15+00:00" }, { "id": "01a08739-df46-7315-9306-418bd0adc61c", "title": "What’s the best way to reset WAAPI chained animations?", "url": "https://benfrain.com/whats-the-best-way-to-reset-waapi-chained-animations/", "published_at": "2023-12-21T12:59:56+00:00" }, { "id": "01a08739-df46-7315-9306-418bd174b4b1", "title": "Using CSS @property inside shadowRoot (web components) workaround", "url": "https://benfrain.com/using-css-property-inside-shadowroot-web-components-workaround/", "published_at": "2023-12-12T16:19:10+00:00" }, { "id": "01a08739-df46-7315-9306-418bd216c14e", "title": "Dynamically create a ref for items when iterating over them in lit.dev templates", "url": "https://benfrain.com/dynamically-create-a-ref-for-items-when-iterating-over-them-in-lit-dev-templates/", "published_at": "2023-11-28T12:31:08+00:00" }, { "id": "01a08739-df46-7315-9306-418bd26b709f", "title": "Selecting and pausing running animations in Lit Web Components", "url": "https://benfrain.com/selecting-and-pausing-running-animations-in-lit-web-components/", "published_at": "2023-11-17T16:59:11+00:00" }, { "id": "01a08739-df46-7315-9306-418bd35e252b", "title": "New Web APIs — a popover on top of a dialog element can’t be interacted with?", "url": "https://benfrain.com/failing-with-multiple-dialog-elements-understanding-the-top-layer-and-popovers/", "published_at": "2023-11-14T17:38:42+00:00" }, { "id": "01a08739-df46-7315-9306-418bd453b1c1", "title": "Review: ZSA Voyager, split, mechanical keyboard", "url": "https://benfrain.com/review-zsa-voyager-split-mechanical-keyboard/", "published_at": "2023-11-12T12:29:45+00:00" }, { "id": "01a08739-df46-7315-9306-418bd4811a59", "title": "Russel Brand, narcissism, and a sadly common pattern…", "url": "https://benfrain.com/russel-brand-narcissism-and-a-sadly-common-pattern/", "published_at": "2023-09-18T12:26:06+00:00" }, { "id": "01a08739-df46-7315-9306-418bd541fdac", "title": "When it comes to text editors, I feel like Goldilocks", "url": "https://benfrain.com/when-it-comes-to-text-editors-i-feel-like-goldilocks/", "published_at": "2023-09-07T16:29:00+00:00" }, { "id": "01a08739-df46-7315-9306-418bd565d299", "title": "Simple settings for writing and converting markdown with Sublime Text", "url": "https://benfrain.com/markdown-settings-for-sublime-text/", "published_at": "2023-08-03T17:13:19+00:00" }, { "id": "01a08739-df46-7315-9306-418bd5a105ec", "title": "Review: The ZSA Platform tenting kit for the Moonlander keyboard", "url": "https://benfrain.com/review-the-zsa-platform-tenting-kit-for-the-moonlander-keyboard/", "published_at": "2023-07-21T09:25:11+00:00" }, { "id": "01a08739-df46-7315-9306-418bd606db45", "title": "Logitech MX Master 3/3s scroll wheel fix", "url": "https://benfrain.com/logitech-mx-master-3-3s-scroll-wheel-fix/", "published_at": "2023-07-14T10:55:59+00:00" }, { "id": "01a08739-df46-7315-9306-418bd633c69c", "title": "Building a line graph with CSS clip-mask", "url": "https://benfrain.com/building-a-line-graph-with-css-clip-mask/", "published_at": "2023-06-23T09:38:14+00:00" }, { "id": "01a08739-df46-7315-9306-418bd6f7c6e9", "title": "Review: Dell 6K 32″ Monitor U3224KBA", "url": "https://benfrain.com/review-dell-6k-32-monitor-u3224kba/", "published_at": "2023-06-02T18:28:10+00:00" }, { "id": "01a08739-df46-7315-9306-418bd78791e5", "title": "I broke my keyboard! Swapping the key switches in the Kinesis Advantage360 Pro", "url": "https://benfrain.com/i-broke-my-keyboard-swapping-the-key-switches-in-the-kinesis-advantage360-pro/", "published_at": "2023-05-03T22:07:47+00:00" }, { "id": "01a08739-df46-7315-9306-418bd7957581", "title": "HUGE macOS Productivity boost: Set-up simple, keyboard only, instant App switching and arrangement", "url": "https://benfrain.com/huge-macos-productivity-boost-set-up-simple-keyboard-only-instant-app-switching-and-arrangement/", "published_at": "2023-04-18T21:42:09+00:00" }, { "id": "01a08739-df46-7315-9306-418bd7bd1459", "title": "Adding to $PATH for a central location for Neovim/NPM tools", "url": "https://benfrain.com/adding-to-path-for-a-central-location-for-neovim-npm-tools/", "published_at": "2023-03-22T20:50:41+00:00" }, { "id": "01a08739-df46-7315-9306-418bd85f3e0a", "title": "Neovim Power Tips: Volume 2", "url": "https://benfrain.com/neovim-power-tips-volume-2/", "published_at": "2023-03-15T23:03:16+00:00" }, { "id": "01a08739-df46-7315-9306-418bd95dd9b6", "title": "Review: MoErgo Glove80, split, wireless, columnar ergonomic keyboard with RGB", "url": "https://benfrain.com/review-moergo-glove80-split-wireless-columnar-ergonomic-keyboard-with-rgb/", "published_at": "2023-03-11T16:30:53+00:00" }, { "id": "01a08739-df46-7315-9306-418bda2e8ee4", "title": "Review: Kinesis Advantage 360 Pro — split ergo mechanical keyboard", "url": "https://benfrain.com/review-kinesis-advantage-360-pro-split-ergo-mechanical-keyboard/", "published_at": "2023-01-02T14:18:18+00:00" }, { "id": "01a08739-df46-7315-9306-418bda9a5a35", "title": "Review: Dactyl Manuform – an ergonomic, custom built mechanical keyboard", "url": "https://benfrain.com/review-dactyl-manuform-an-ergonomic-custom-built-mechanical-keyboard/", "published_at": "2023-01-01T16:54:51+00:00" } ] posts Claim your blog
Back to benfrain.com
Blog · corpus.blog/blogs/benfrain.com/posts

benfrain.com

benfrain.com

2026

2025

2024

2023