41554 blogs · [ { "id": "01a08764-caf5-712a-a9d1-2e747aa4c6e3", "title": "When coding gets cheap, engineering gets harder", "url": "https://crinkles.dev/writing/when-coding-gets-cheap-engineering-gets-harder/", "published_at": "2026-08-09T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747af5f73c", "title": "The mythical magical button", "url": "https://crinkles.dev/writing/the-mythical-magical-button/", "published_at": "2025-06-24T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747b65d216", "title": "Slightly enhanced sticky revealing footer", "url": "https://crinkles.dev/writing/enhanced-sticky-footer/", "published_at": "2025-06-17T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747c54c200", "title": "A modern picture showcase using CSS", "url": "https://crinkles.dev/writing/a-modern-image-showcase-using-css/", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747d31d617", "title": "I cannot wait for the CSS @function", "url": "https://crinkles.dev/writing/i-cannot-wait-for-css-functions/", "published_at": "2024-12-29T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747e1033ee", "title": "The importance of shipping source code as a library maintainer", "url": "https://crinkles.dev/writing/the-importance-of-shipping-source-code/", "published_at": "2024-07-17T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747e35be95", "title": "MacOS-like dock effect with a “previous-sibling combinator”", "url": "https://crinkles.dev/writing/a-modern-css-previous-sibling-combinator/", "published_at": "2024-05-20T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747f08f8c1", "title": "Using recursive CSS to change styles based on depth", "url": "https://crinkles.dev/writing/using-recursive-css-to-change-styles-based-on-depth/", "published_at": "2024-02-11T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747f203676", "title": "Combining :has and :only-child to change tab containers", "url": "https://crinkles.dev/writing/combining-has-and-only-child-to-change-tab-containers/", "published_at": "2024-01-15T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e747f8b87d0", "title": "Combining :placeholder-shown and :has", "url": "https://crinkles.dev/writing/combining-placeholder-shown-and-has-selectors/", "published_at": "2023-08-19T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7480e67a1c", "title": "I was wrong about service workers", "url": "https://crinkles.dev/writing/i-was-wrong-about-service-workers/", "published_at": "2023-07-28T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7481c43a3f", "title": "Going back to CSS-only after years of SCSS", "url": "https://crinkles.dev/writing/going-back-to-css-only-after-years-of-scss/", "published_at": "2023-07-03T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74825ff420", "title": "Old man yelling at a cloud", "url": "https://crinkles.dev/writing/old-man-yelling-at-a-cloud/", "published_at": "2023-06-28T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74840c1a42", "title": "Different approaches to fluid typography and layouts", "url": "https://crinkles.dev/writing/different-approaches-to-fluid-typography-and-layouts/", "published_at": "2023-03-07T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74841ad58b", "title": "Hiding side content in responsive design", "url": "https://crinkles.dev/writing/hiding-side-content-in-responsive-design/", "published_at": "2023-02-24T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748447440d", "title": "Use the child-element count in CSS", "url": "https://crinkles.dev/writing/use-the-child-element-count-in-css/", "published_at": "2023-02-21T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7482fe2c1c", "title": "Engineering, UX design and the value stream", "url": "https://crinkles.dev/writing/how-to-make-framework-decisions/", "published_at": "2023-02-20T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74851cf7d8", "title": "A nth-child CSS trick", "url": "https://crinkles.dev/writing/a-nth-child-css-trick/", "published_at": "2023-01-25T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74860149b8", "title": "Creating a stacked bar chart using only CSS", "url": "https://crinkles.dev/writing/css-only-stacked-bar-chart/", "published_at": "2023-01-22T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74867ec562", "title": "Updating my graph layout algorithm", "url": "https://crinkles.dev/writing/digl-revisited/", "published_at": "2023-01-05T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7486dcdf68", "title": "The case for state machines in client-side applications", "url": "https://crinkles.dev/writing/the-case-for-state-machines/", "published_at": "2022-06-02T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7487b225b5", "title": "An ode to the CSS owl selector", "url": "https://crinkles.dev/writing/an-ode-to-the-css-owl-selector/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e7488a92264", "title": "Scalable CSS architecture", "url": "https://crinkles.dev/writing/my-css-architecture/", "published_at": "2022-01-29T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74897f3d46", "title": "SWR-like data fetching in Svelte", "url": "https://crinkles.dev/writing/data-fetching-swr-svelte/", "published_at": "2021-12-10T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74839315e5", "title": "State machines and state management", "url": "https://crinkles.dev/writing/state-management/", "published_at": "2021-12-08T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748a79e8ff", "title": "Authentication token management", "url": "https://crinkles.dev/writing/client-side-token-refresh/", "published_at": "2021-11-17T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e74801de4f9", "title": "Interdependencies and code stability", "url": "https://crinkles.dev/writing/code-stability/", "published_at": "2021-09-14T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748ad9b00d", "title": "Horizontal centering in CSS", "url": "https://crinkles.dev/writing/horizontal-centering-in-css/", "published_at": "2021-06-20T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748aeb94d6", "title": "Creating an auto-layout algorithm for graphs", "url": "https://crinkles.dev/writing/auto-graph-layout-algorithm/", "published_at": "2021-06-10T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748b14f236", "title": "Binding CSS and JavaScript with HTML data-attributes", "url": "https://crinkles.dev/writing/css-data-attributes/", "published_at": "2021-04-22T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748b16353a", "title": "Modern CSS grid solutions to common layout problems", "url": "https://crinkles.dev/writing/css-layout-patterns/", "published_at": "2020-07-06T00:00:00+00:00" }, { "id": "01a08764-caf5-712a-a9d1-2e748b964ab8", "title": "Demystifying the component architecture", "url": "https://crinkles.dev/writing/ui-component-anatomy/", "published_at": "2020-01-12T00:00:00+00:00" } ] posts Claim your blog
Back to crinkles.dev
Blog · corpus.blog/blogs/crinkles.dev/posts

crinkles.dev

crinkles.dev

2026

2025

2024

2023

2022

2021

2020