David Luhr @luhr.co · 15/09/2026Pleased with how this Calendar component is coming together for Kit's design system. It includes month, year, and single/range day pickers with full keyboard navigation/assistive technology support and lots of interesting styling challenges. 100
David Luhr @luhr.co · 03/09/2026Stoked with how this combobox for Kit's design system came together. Lots of design engineering in a single component. It offers both single and multiple selection variants, with fuzzy match, search highlighting, and convenient clearing options, all with full keyboard support. 000
David Luhr @luhr.co · 12/05/2026Spent a few hours on Sunday redesigning my personal site: luhr.co It's an intentionally simple site, so it's easy to work fast and make changes. But even a simple site always has room for improvement and further simplification.luhr.coDavid LuhrDavid Luhr is a designer and engineer with a passion for accessibility, eliminating waste, and creating a responsible web. Learn more about his work. 000
David Luhr @luhr.co · 27/04/2026Fun update: I've joined Kit as their Senior Design Engineer! I'm building Kit's design system, helping bridge the product design and engineering teams, and exploring the frontier of design workflows. I couldn't be more excited for this opportunity and will be working public along the way. 030
David Luhr @luhr.co · 10/03/2026Stoked how these data visualizations came together last week at Buffer. Lots of data science, content, design, and design engineering went into these social media engagement insights. Check out the full page: buffer.com/insights/sta... 010
David Luhr @luhr.co · 06/03/2026Had a breakthrough recently with getting decent CSS from agents. Let's call it HTML-Driven Development: - Craft unstyled HTML to control the structure, semantics, accessibility, and even class names - Then, ask the agent to style it, using existing styles and variables CSS as reference 000
David Luhr @luhr.co · 26/02/2026Much of the value of coding agents comes from interpreting natural language requests and deciding which traditional software tools to use in response. They are increasingly useful as a flexible adapter/coordinating layer for existing, efficient, predictable software. 000
David Luhr @luhr.co · 19/02/2026There's a disconnect with generating high fidelity designs with AI. The bottleneck of design and engineering isn't ideas, it's gradually defining the right idea. 100
David Luhr @luhr.co · 18/02/2026A single content section can be packed with animation, interaction, layout, and accessibility considerations. I just published a behind-the-scenes of building Buffer's homepage hero: buffer.com/resources/ho... And here's a companion video: www.youtube.com/watch?v=1yDT...buffer.comBuffer: Social media management for everyoneUse Buffer to manage your social media so that you can create and share your content everywhere, consistently. Try our forever free plan or upgrade for more. 000
David Luhr @luhr.co · 09/12/2025Today I needed to scale an element I couldn't directly style. `transform: scale(0.5)` doesn't affect layout, which leaves empty space around the element. Then, I learned about `zoom: 0.5`, which is a newly supported CSS property that does exactly what I needed: scale an element and affect layout. 010
David Luhr @luhr.co · 20/11/2025My team at Buffer is hiring a Senior Engineer – Growth Marketing. We'll work closely together on projects like referral programs, internationalization, and tracking/experimentation systems. - Fully remote - 4-day work week - $156.5K–$202.3K Apply: buffer.com/journey/a661... 000
David Luhr @luhr.co · 29/10/2025Dark mode isn't just to look cool. It's an important accessibility feature that makes the experience better for everyone. Light mode causes eye strain and discomfort for me across a day. Dark mode solves this and makes content more legible for me. Stoked dark mode is now available in Buffer! 020
David Luhr @luhr.co · 28/10/2025With testing code, there are competing approaches of outside-in vs. inside-out. Instead, I work outside-in *then* inside-out: (1/4) 100
David Luhr @luhr.co · 10/10/2025You're too busy to fix your problems because you're too busy to fix your problems. The reason why you can't slow down to make improvements is because you never slow down to make improvements. 010
David Luhr @luhr.co · 29/09/2025Playing around with animation and content ideas for an upcoming Buffer feature. If people have animation enabled (accessibility-first design), comments spawn in random positions. Might include a button to clear the comments and a scroll-driven animation that ties into the page. 020
David Luhr @luhr.co · 20/09/2025Staycations are underrated. I took this past week off and spent my time wherever my interests took me. Without any worry of productivity, I still: - Practiced piano - Read - Organized my digital life - Rearranged garage workshop for upcoming projects - Worked on creative videos 020
David Luhr @luhr.co · 12/09/2025If 10x engineers exist, they pair on their work. Engineers who pair grow rapidly from cross-mentorship, keep each other unblocked, create focus and motivation, and offer continuous code review. This is more efficient, higher quality, and yes, faster than working solo. 000
David Luhr @luhr.co · 05/09/2025A 10x engineer isn't what you think If 10x engineers exist, they don't work 10x faster or create 10x the output. Speed and output without quality are waste. A 10x engineer creates 10x the value with the same resources. Read more in my latest blog post: luhr.co/blog/2025/09...luhr.coA 10x engineer isn't what you think10x engineers don't work 10x faster or create 10x the output. They create 10x the value with the same resources by questioning ideas and eliminating waste. 000
David Luhr @luhr.co · 28/08/2025There's all this hype around generative design tools enabling teams to create prototypes before committing to high fidelity design and empowering designers to build and ship directly. This opportunity has always been there. All it requires is designer-engineer pairing. 020
David Luhr @luhr.co · 21/08/2025I often get stuck using `position: sticky;` and forget the requirements: 1. Element must have an `inset-` property set 2. Element only sticks within its containing block so the parent must be taller than the min content 3. No ancestor element can have `overflow` other than `clip` 000
David Luhr @luhr.co · 12/08/2025Sneak peak of my work this week: rich, interactive charts with follower growth, posting frequency, engagement, and reach benchmarks we gather at Buffer. This project got me deep into charting/dataviz libraries and SQL queries. Excited to launch it soon! 040
David Luhr @luhr.co · 07/08/2025I recently built a new homepage hero section on Buffer.com with this fun interactive animation. I'm writing a post to break down the build since there are lots of cool tricks I learned along the way. What do you want me to cover? What questions do you have? 000
David Luhr @luhr.co · 30/07/2025Not sure if I'm part of an A/B test, but really excited to have faster playback rates available on YouTube. My playback options now go from 0.25x to 4x. I usually listen to informational content at 3x so this is a nice accessibility win! No more manually setting it to 3x with JavaScript. 000
David Luhr @luhr.co · 22/07/202510 things that shaped my work: 1. Everything is a process 2. There's always a customer 3. Blame the process, not the person 4. Learn to identify (and not tolerate) waste 5. Stop and fix 6. Make daily improvements 7. Prioritize improvements 8. Mistake-proof 9. Follow one-piece flow 10. Achieve flow 100
David Luhr @luhr.co · 17/07/2025We're hiring for 3 engineering roles at Buffer! - Senior Product Engineer (Frontend) - Senior Product Engineer (Backend) - Senior Backend Engineer (Platform and API) These roles offer $156.5K - $202.3K + equity. We're a fully remote, global team with a 4-day workweek. Apply: buffer.com/journey 010
David Luhr @luhr.co · 12/07/2025I've started a secret YouTube channel and I'm not going to share it. It's an experiment in starting from scratch, posting to the void, and also making videos solely for myself. From experience, growing an audience from 1, to 10, to 100 is the hardest part. From there, it's easier to build momentum. 000
David Luhr @luhr.co · 02/07/2025I accidentally wrote almost 2,000 words on the UX of number inputs and feel like I just scratched the surface. My favorite part of design engineering is thinking through details at every level. Here's the post: luhr.co/blog/2025/07...luhr.coA deep dive on the UX of number inputsNumber inputs have deceptively complex UX, interaction, and accessibility considerations. Let's explore this element through the lens of design engineering. 000
David Luhr @luhr.co · 25/06/2025Utilizing 100% of capacity seems efficient, but isn't. When something is at 100% utilization, it's actually the bottleneck, which can't withstand increases in demand. It's best to aim for ~80% utilization. This principle applies to any process. 000
David Luhr @luhr.co · 24/01/2025🔴 We're live! www.youtube.com/watch?v=1Y5gAtf0lEg I'm live reading Shape Up and sharing my thoughts and advice on the product development process. Join and ask any questions you have.youtube.comLet's read Shape UpWe're reading Shape Up live. I share my thoughts on advice on Shape Up after implementing it with 4 teams of various sizes, most recently with the team at Bu... 010
David Luhr @luhr.co · 23/01/2025We're kicking off an experiment with Shape Up in the Buffer marketing team. I'll be livestreaming this Friday, January 24 at 2 PM PST to read Shape Up live. As I read the book, I'll be sharing my notes, reflections, and experiences. youtube.comLet's read Shape UpWe're reading Shape Up live. I share my thoughts on advice on Shape Up after implementing it with 4 teams of various sizes, most recently with the team at Bu... 010
David Luhr @luhr.co · 20/12/2024There's a vast difference between questioning how things are done and being negative. Wondering if there's a better way is one of the most positive activities you can do. 010
David Luhr @luhr.co · 19/12/2024Meetings are a symptom of bad process. They are a form of batch processing, a result of batching work. They are an outlet for a lack of shaping and pairing. 010
David Luhr @luhr.co · 18/12/2024One of the most effective things you can do as an individual and team is reduce work-in-progress. With one-piece flow, working on the same thing together, you will dramatically reduce overhead, increase quality, and increase velocity. 020
David Luhr @luhr.co · 17/12/2024Everything is a process. Every process can be improved. And the best process is no process. 010
David Luhr @luhr.co · 16/12/2024Good enough is risky. Just because something is producing value doesn't mean it's worth doing. What are you missing out on by not questioning if there's a better way? 020
David Luhr @luhr.co · 18/11/2024I've been shifting from digital to analog productivity with the Ugmonk Analog system and some hourglasses for the Pomodoro Technique. This setup has felt more engaging, motivating, and satisfying. I wrote a quick post about my current setup:luhr.coAnalog productivityLately I've been shifting to more physical and analog productivity with Analog cards by Ugmonk and hourglasses for the Pomodoro Technique. 030
Reposted by David LuhrMartin @mgarcia.bsky.social · 03/10/2024I've recently learned and started to use Daily 3S thanks to my coworker @luhr.co It's been a improving for my work life. Let me break it down 🧵 #ProductivityHacks 111
David Luhr @luhr.co · 26/09/2024Ever wondered why `position: sticky;` isn't working? Look for `overflow: hidden;` set on an ancestor element. The fix: use `overflow: clip;` instead, which doesn't create a new block formatting context. The things you learn after an hour of maddening troubleshooting. 070
David Luhr @luhr.co · 23/09/2024The results from Buffer's no meetings experiment: It was an overall success! This will be our new default approach. We generally felt energized, productive, and decisive. We are questioning assumptions more and liked the calm, reflective, transparent communication. 130
David Luhr @luhr.co · 17/09/2024This week at Buffer we're running an experiment: no meetings. Instead of meetings, we're leaning into long-form asynchronous communication, coupled with pairing sessions as needed. 110
David Luhr @luhr.co · 11/09/2024🔴 We're live! www.youtube.com/live/UbGMG45v7QE I'm live-building a redesigned page for Buffer's Open Salaries. Join to watch and ask any questions you have about large-scale redesigns, design engineering, and accessibility.buff.lyLive-building the redesigned Buffer Open Salaries pageWe're redesigning the Buffer.com website in the open. I'll be rebuilding the Open Salaries page live and answering your questions about the redesign process,... 000
David Luhr @luhr.co · 10/09/2024We're redesigning the @buffer.com website in the open. 🗓️ Tomorrow (Wednesday) I'll be livestreaming at 9 AM PST (UTC -8) to show my design engineering process for this large-scale redesign. I'll be redesigning our Open Salaries page and answering your questions. www.youtube.com/@buildux 063
David Luhr @luhr.co · 30/07/2024We just launched Bluesky support with @buffer.com and the landing page was a great demo of how to use various units for overlapping images. Let's start with the hero image. We want it to extend past the bottom of the hero section, without impacting the layout of the next section: 150
David Luhr @luhr.co · 27/06/2024I routinely come back to this video from Dan Mall and Brad Frost on the designer and developer workflow: www.youtube.com/watch?v=tnkr... Almost 6 years later and it's still ahead of most teams. Tools won't solve collaboration pains. Pairing and iterating in the final medium will.youtube.comYouTube is not currently available on this device.To learn more, please visit the YouTube Help Center: https://www.youtube.com/help 000
David Luhr @luhr.co · 05/06/2024Teams that feel they're too busy to fix their problems are too busy because they don't fix their problems. Learning to stop and fix frees up your future time and resources. If you feel like you can't stop to fix things, that's the best indication that you need to. 000
David Luhr @luhr.co · 13/05/2024James Shore's Testing Without Mocks course is now free for everyone: www.jamesshore.com/v2/courses/t... I took this course as a paid workshop early last year and it unlocked entire areas of testing that were previously a pain for me and my clients. Highly recommend! 000
David Luhr @luhr.co · 22/04/2024Ever export an SVG from Figma and the width/height is 1px larger than expected? Check the frame's X and Y position. If they aren't set to whole pixel values, Figma will increase the SVG's viewbox by a pixel. This has been a mystery to me until now! 000
David Luhr @luhr.co · 09/04/2024🎉 I’m thrilled to announce I’m starting a new position as Senior Design Engineer at Buffer: luhr.co/blog/2024/04... I'll be overseeing technical strategy for the Buffer.com marketing site and blog while shipping high quality, accessible work. 000
David Luhr @luhr.co · 12/03/2024This refactoring challenge series by Ray Myers of Craft vs. Cruft demonstrates that even code that wasn't written to be testable can be tested, and adding tests is the only way to dependably understand and improve code. The obfuscated C code videos are my favorite: youtube.com/playlist?lis... 000
David Luhr @luhr.co · 11/03/2024"eight hours of pairing a day, and every line of code tested, and nearly every commit rebased and then pushed straight to main. With about 400 programmers working on what was effectively one codebase." This collection by Nat Bennett is a great read: simplermachines.gumroad.com/l/ngiqff?lay... 000