All blogs / Frontend / CSS / browsers
daverupert.com
The personal blog of Dave Rupert, web developer and podcaster from Austin, TX.
Frontend / CSS / browsersWeb developmentAI / MLEssays / personal
- Posts
- 563 from 26 Jan 2009 to 26 Oct 2026
- Posting
- weekly (46 in the last year)
- Kind
- personal blog
- Feed
- https://daverupert.com/atom.xml
2026 34
- Arc-like automatic picture-in-picture in Chromium
- Bad at email
- Recursion is DEAD and HTML killed it
- Play tupo
- How Many Dudes?
- I wish you the best in the Offline
- Introducing Microlighter
- Shadow-piercing local component variables
- Vibe Check №43
- Before I go: Double your business with companies you like
- The new yet familiar CodePen 2.0
- Finding curated public domain images
- A workaround for hiding empty slots in Chromium
- Spoons by Sam
- Vibe Check №42
- The duality of language models in the browser
- 10,000-watt GPU meet 40-watt lump of meat
- I don't want a screenshot of your Claude conversation
- When moving fast, talking is the first thing to break
- Inverted themes with light-dark()
- Ozempic dreams
- Before I go: People like it when other people make things
- People are not friction
- Priority of idle hands
- Smaller and dumber
- Magic Words
- Write about the future you want
- I'm swearing off APIs entirely
- The best version of my site so far...
- Focus rings with nested contrast-color()?
- Using your design system colors with contrast-color()
- Interpolate contrast-color() to manipulate lightness
- Algorithmic hover states with contrast-color()
- Twenty Twenty-Five
2025 53
- Vibe Check №41
- One thing churches do well
- Grid Paper
- Clues by Sam
- Inkwell Games
- Project Kamp
- Precious Plastic
- Golden candlesticks
- La Rinconada, Peru
- ARIatHOME
- The built-in storytelling of Rust
- Random Mini Dungeons
- Vibe Check №40
- Lots to shout about in Quiet UI
- The killer feature of Web Components
- Why I hate the MVP car
- Many years on the job and I still don't get it.
- “Why would anybody start a website?”
- Git diagramming "The Weave"
- Limiting YouTube to a Single Tab
- Classifiers and cosmotechnics
- Vibe Check №39
- All the concerns that make you a boring developer
- Theater UX
- A modest proposal for new holidays to manage your digital life
- A fiscal recalibration
- The Economy? He died five years ago.
- Easy sci-fi rectangles with corner-shape
- Before I go: Always buy the $200 Yamaha
- A social media ethos
- The Pyramid of Merit
- Productivity traps I fall into regularly
- Inverse text-sizing based on text-length with attr()
- Chekuskin's dream
- The unsung principles of RedwoodSDK
- The Fifth Estate
- Take My Hand, Precious Lord
- Vibe Check №38
- Moving from Notion to Obsidian
- How to make a Link Aggregator in Obsidian
- Week Links №2: April 2025
- Don't let your voice be flattened by the über theme
- Enshittification as a matter of taste
- Tag, you're it
- The only way to know for sure... is to build a prototype
- I don't like sand
- Vibe Check №37
- 15 Minutes
- A story about pans
- Raycast Focus works really well
- My website has been gaslighting you
- American Hearts
- Making "this" less annoying
2024 62
- Twenty Twenty-Four
- Vibe Check №36
- My little games workshop
- CSS wants to be a system
- Every token is a feature
- Intermittent fasting
- I got the ADHD, too
- Goodbye, Moogs
- Hammers
- Where web components shine
- Vibe Check №35
- Hibiclens
- Good forms
- Finding questions and answers about why I like books
- The Dev Tools Performance Monitor Panel
- Vibe Check №34
- The cost of fueling my body
- Summer rental
- Mini 4WD
- Vibe Check №33
- A common web component learning blunder
- Dave Goes Microsoft
- Vibe Check №32
- A quick light-dark() experiment
- Thoughts on Cosmotechnics
- Ideas for my dream CMS
- A weighted vest
- The native app install experience
- Mouthguard
- How do you verify that?
- John Romero doesn’t believe in prototypes
- Vibe Check №31
- How to get on a podcast
- Duolingo
- A tale of three architectures
- UI = f(statesⁿ)
- Week Links №1: Mid-Feb 2024
- A dozen thoughts about AI
- CoraQuest
- Continuous startup jobs
- A holy communion
- “I used to listen to your podcast”
- An inbox full o’ opportunities
- At last, browser choice*
- Big, beautiful, beefy focus states with :focus-visible
- What Can a Website Do?
- Are Design Systems a zero-interest rate phenomenon?
- Users first then do teams
- One big, one little
- The time to unmaintainable is very low
- Play at work
- Where have all the flowers gone?
- WobblyBox, a web component for wobbly boxes
- Stitch images together with Stitchy
- Not a collector, but...
- Dropout
- Trying to be the ideal American family with a small fridge
- Ecosia
- MDX with Web Components Part II
- Accessible Fart Machines
- Quotes from moving house
- Twenty Twenty-Three
2023 66
- The History of Donkey Kong and Mario
- Vibe Check №30
- My /projects page
- I spent a whole week refactoring a single file
- Vibe Check №29
- My /stories page
- So you’ve been publicly accessibility-shamed
- The plan and the plateau
- Gummy vitamins as a candy replacement
- Snap Kitchen
- Califia Farms Café Oat for Baristas Blend
- Fun water
- MDX with Web Components
- FitVids has a web component now
- Read Later in Feedbin
- Nine things automated accessibility tests can’t test
- Listen to Page in Mobile Safari 17
- Adam Savage's One Day Builds
- Luro is out of beta 🚀
- Your feedback means more to small teams
- Quick thoughts on chips
- Expert Idiot
- Scroll shadows with animation-timeline
- Personality tests and nazis
- If I’m already using React, why should I rewrite my app with Web Components?
- Something’s different with the Vision Pro
- Uncovering a new class of responsibilities
- Vibe Check №28
- Anyone can dig up a road
- If Web Components are so great, why am I not using them?
- One friend a day
- Liquid Death
- My dad recliner
- Vibe Check №27
- Lessons from Soviet Russia on deploying small nuclear generators
- My behind the scenes of animation YouTube playlist
- Markdown images are an anti-pattern
- Boringness in Design Systems
- My double standards about JS framework compilers
- A guy telling peanut butter jokes for 12 minutes
- Getting started with View Transitions on multi-page apps
- Sometimes the job is an assembly line
- The Hurdy-Gurdy software engineer
- Using Arc Boosts to identify bots in Elk
- Vibe Check №26
- Japanese manhole cover fabrication processes
- Goodbye, Rudy
- Limitations and websites
- GameDev Journal №1: Otis’s Zelda-like
- A bag of distractions
- The internet has broken gift giving
- The Feature Work → Maintenance Work Loop
- The case for Flex applications
- Vibe Check №25
- Creating Web Components on the Kevin Powell Livestream
- SOLVED! The Case of the Bing Ban Theory
- Lessons from my Gunpla Tools
- Yoinking auto-transcripts from Slack
- Using AI to appease Jest
- CSS Wishlist 2023
- So you want to make a new JS framework
- My Bing Webmaster Guidelines Compliance Report
- Updates on my Bing ban
- I'm Shadow Banned by DuckDuckGo (and Bing)
- HTML with Superpowers: The Guidebook
- Vibe Check №24
2022 65
- Twenty Twenty-Two
- Megan Smith explaining the General Magic prototyping process
- They were supposed to replace the creative jobs last
- Vibe Check №23
- Dragon's Heaven
- They invented fifty colors for Akira
- How to capture single frame from an HTML video
- E-Z Play Today
- It takes one person to knock down a silo
- Web Component News - Fall 2022
- Vibe Check №22
- The story of this empty box
- A Use Case for Cascading Attribute Sheets
- Can you hear the difference between a $200, $2,000, $20,000, and $200,000 guitar?
- Vibe Check №21
- The Patchability of the Open Web
- Denialists, Alarmists, and Doomists
- 26 Things from “101 Things I Learned in Architecture School”
- Shigeru Miyamoto on the Secret to Success
- Prototyping to learn
- Solara
- 30 Minute Study Model
- Vibe Check №20
- Modern alternatives to BEM
- The web is a harsh manager
- Thoughts on Copilot
- Vibe Check №19
- Before I go: What I know about putting on a rock show
- Cloud-work vs. Land-work
- The kids are online
- Creating a Netlify-to-Notion form
- Solving “The Dangler” Conundrum with Container Queries and :has()
- Where I'm at on climate change
- Vibe Check №18
- The energy to suggest change
- The Demo → Demo Loop
- Goodbye, IE
- Vibe Check №17
- The recycling backlog
- Thoughts on spectrums
- Notes from a gopher:// site
- Vibe Check №16
- Server-side vs Client-side Analytics
- Inspiration in the Tall Grass
- An unplanned open redesign
- Productivity-sniped by PARA
- My Weekly Engineering Report
- 7 Web Component Tricks
- What if... one day everything got better?
- Vibe Check №15
- Different people, different ways
- Vibe Check №14
- Goodbye, Big Freeda
- The 15 minute fix vs the 30 day fix
- 原爆を許すまじ
- Τ’ακορντεόν
- Been in this war for too long
- Six end of week links
- Before I go: When it comes to complaining about web browsers
- Five links for a Friday afternoon
- Vibe Check №13
- Five Hundred ShopTalks
- The Vacation
- The man playing the ukulele at the doctor’s office.
- HTML is general, ARIA is specific
2021 48
- Vibe Check №12
- Twenty Twentyone
- Five good feelings
- Sustaining Maintaining
- Vibe Check №11
- Status Performance Analysis in Team Fortress 2
- Gaming improved my EQ
- Blogtober
- Holding Beef 🥩
- My pre-publish blogging rituals
- The mistake every new game developer makes
- Let's talk about Native HTML Tabs
- 🎨 Alpha Paintlet
- HTML with Superpowers
- My retirement seminar
- Why don’t video games take sex seriously?
- Vibe Check №9
- Shop Talk Goes Video
- My Notion Blogging Kanban
- All things are possible with code, but not everything is beneficial
- Vibe Check №8
- The Surprise Chain
- CSS Modules-in-CSS Module Scripts
- Vibe Check №7
- One-offs and low-expectations with Safari
- Memories cost money
- DX, to me
- My petite-vue review
- Vibe Check №6
- Log Jams
- The perfect, more expensive, out-of-stock thing versus the less perfect, less expensive, in-stock thing.
- The Amnesia Fortnight Documentary
- Vibe Check №5
- Vibe Check №4
- The OceanMaker
- Algorithms and Art
- The Data is In!
- Vibe Check №3
- How much for a planet?
- Vibe Check №2
- One month on Analog
- The web is something different
- Dearest Martha,
- Vibe Check №1
- Traditional Japanese carpentry versus modern times
- My typical day
- Art Direction for Static Sites
- Keep Your Hands Off Eizouken!
2020 37
- Twenty Twenty
- Dave goes back to Mac
- Street Fighter Alpha: An oral history
- A tale of four prototypes
- Happier HTML5 form validation in Vue
- Technical debt as a lack of understanding
- Darmok and Jalad at Tanagra
- Sass vars, CSS vars, and semantic theme vars
- A trip to the bookstore
- A quintessential blogging mistake.
- Do the next right thing
- Follow the fun
- alt attributes like paragraphs
- The tangled webs we weave
- Boredom begets boredom
- I'm writing this on my phone
- What is the Value of Browser Diversity?
- Jettison the cargo
- Gettin’ Foldy with the Dual-screen Web (Part II)
- Gettin’ Foldy with the Dual-screen Web (Part I)
- “We‘re in a rebuild the plane while flying situation”
- RFC 1925 - The Twelve Networking Truths
- Austin Revealed: Civil Rights Stories
- Jon Batiste: Tiny Desk Concert
- Tradeoffs and Shifting Complexity
- Five Key Milestones in the Life of a Design System
- Initial Impressions of WSL 2
- Oh, the Paywalls You'll Meet
- Low-Challenge, High-Skill Tasks in Terrible Times
- My tall friend Christopher
- Maintaining Performance
- What's in a Database Table Name?
- HTML: The Inaccessible Parts
- A Two Settings Problem
- The Web is Industrialized and I helped industrialize it
- How to Start a Podcast
- When Public Speaking Goes Wrong
2019 32
- Twenty Nineteen
- Everything I Know About Remote Work
- Why <details> is Not an Accordion
- Five packages
- Working with pain
- Malloc
- Squandered Star Wars Characters
- Is Using Coil to Monetize Prompts Gonna Work?
- Introducing Prompts
- Weeknotes #9
- Sticks and Ropes.
- What I Like About Eleventy
- Weeknotes #8
- What I Like About Vue
- Weeknotes #7
- The Three Evils of Society
- Books on Management
- Getting Settled at the New Dave Rupert LLC HQ
- Weeknotes #6
- Weeknotes #5
- Itemizing Responsibilities
- Weeknotes #4
- Goodbye Google Analytics, Hello Fathom
- Some Unsolicited Blogging Advice
- Perceived Velocity through Version Numbers
- Anthology of Mute Buttons in Voice Chat Apps
- The State of Agile Software in 2018
- Weeknotes #3
- Weeknotes #2
- Accessible Page Navigation in Single Page Apps
- 4 Things I Miss About Mac
- Angular, Autoprefixer, IE11, and CSS Grid Walk into a Bar...
2018 39
- Twenty Eighteen
- Weeknotes #1
- #EdgeGoesChromium
- The Good Path
- Afro-American Work Songs in a Texas Prison
- Concerns of the Self, the Team, and the Org
- How Mega Man 11's Levels Do More With Less
- Hard Costs of Third-Party Scripts
- 4 Podcast Arcs Worth Listening To
- If Statements Should Cost $10,000 Each
- Color Cycling with Workers
- Ch-Ch-Ch-Changes
- Repetitive Strain
- A11Y Nutrition Cards
- Twitchonomics
- Assistive Technologies I Test With
- Fixing these webs
- The Caves of Steel
- The Righteous Mind
- When
- What’s Golf for People Like Me?
- Telepresence
- The React is “just” JavaScript Myth
- My Struggle with Testing Code
- Webdev on Windows with WSL and VS Code
- Larry Tesler Interview: The Laws of Interaction Design
- The Eponymous Laws of Tech
- Prototyping and the Wintergatan Marble Machine
- How Much Are Podcasts Worth?
- Pitfalls of Card UIs
- #davewentandroid
- The Four Jobs in Web Design
- Animated SVG Radial Progress Bars
- Machines are Ahead of Morals...
- The Mammoth
- Cheapass Parallax
- Bad Month for the Main Thread
- Endless Content
- Introducing ❬ASIDE❭ QUEST
2017 34
- Twenty Seventeen
- More Insidiously Still...
- March
- Cognitive Overload
- 4 Documentaries about Animation
- 4 Documentaries about Game Dev
- 4 YouTube Channels for Web Devs
- Team Incentives in Overwatch
- Happier HTML5 Form Validation
- The Medium
- Is Heart the greatest rock band ever?
- Me listening to any song by The Police
- Transpiled for-of Loops are Bad for the Client
- The Era of Newshammer
- A good science fiction story...
- Dave Goes to the Microsoft Edge Web Summit 2017
- Breaking the Grid
- Jonathan Haidt: The moral roots of liberals and conservatives
- Disalienation: Why Gender is a Text Field on Diaspora
- Shigeru Miyamoto's 1999 GDC Keynote
- The Problem with IE9
- Jekyll Includes are Cool
- Namespaces
- 4 Things I Know About Pattern Libraries
- Having a Hard Time
- Initial Impressions of CSS Grid Layout
- In-somecontext Sass Partials
- How Buildings Learn
- Thoughts on Negative Margins
- Hassle-free Full Bleed with *:not()
- My Bash on Windows Dev Environment
- My PocketCHIP
- Disneyland and the Character Machine
- APT Features that Web Tooling Craves
2016 26
- Dave Builds a PC
- Addiction, the Mobile Currency
- The Shitlord in the Forum Problem
- Desktop is Lava
- How I'd Save Windows Phone
- Super Mario 64 - 1996 Developer Interviews
- The Shock of the New: Trouble in Utopia
- The Web Is Ruined and I ruined it
- Windows Shutdown Crapfest
- I don't care about accessibility
- Hidden Expectations
- Solvable Chunks: One Week Video Game
- The #davegoeswindows Finale
- A Standard System of Measurements?
- Ruby on Rails on Bash on Ubuntu on Windows
- Dave Goes Build
- Responsive Product Comparison Tables
- Alternate Realities
- Lists, Details, and Flows
- Jekyll on Bash on Ubuntu on Windows
- Dave Goes Back to Mac for 20 Minutes
- Spring Cleaning
- Screencasts on a (Performance) Budget
- Light Frames, Great Content
- Dear Github
- #davegoeswindows check-in
2015 25
- Intrinsic Placeholders with the Picture Element
- The Cost of Frameworks
- Chrometophobia
- On Hurk-Jerk
- Dave Goes to the Microsoft Store
- The Invisible Hand of the Barista
- Windows Editors and Shells
- Making a Video Game
- Side Products
- Developing on Windows
- Dave is Going Windows
- Every Browser is the New IE (to me)
- Post literate society
- Children of the Magenta (Automation Paradox, pt. 1)
- The Gruen Effect
- A Special Feature
- Loki’s Wager
- Apple and Google Race to See Who Can Kill the App First
- Progressive Apps: Escaping Tabs Without Losing Our Soul
- What’s New in Web Development in WebKit and Safari
- The Economic Value of Rapid Response Time
- The Desktop Conundrum
- #davegoeswindows?
- Deploy a Password Protected Jekyll Site on Heroku with Dropbox
- Ol’ John Henry