David Luhr Profile
David Luhr

@david_luhr

Followers
2K
Following
2K
Media
118
Statuses
1K

Senior design engineer @buffer working on accessible design and code. Creator of https://t.co/espySIvUPZ

Bend, OR
Joined May 2017
Don't wanna be here? Send us removal request.
@david_luhr
David Luhr
26 days
Today 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 does exactly what I needed: scale an element and affect layout.
0
0
1
@david_luhr
David Luhr
1 month
My team @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: https://t.co/4vaxNptaYd
0
0
4
@david_luhr
David Luhr
2 months
Dark 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. Stoked dark mode is now available in @buffer!
0
0
1
@david_luhr
David Luhr
2 months
Eventually, I arrive at the lowest level with ridiculously simple utility functions. I get those low-level tests passing, then climb back up (inside-out). I go up a level, use my new functions, get tests passing, and keep climbing until my top-level functionality is done (4/4)
0
0
0
@david_luhr
David Luhr
2 months
Instead, I start with top-level functionality and write tests for what the final expected output/behavior is (outside-in). These tests will fail. To get these tests to pass, I descend down, writing failing tests for simpler and simpler pieces of functionality. (3/4)
1
0
0
@david_luhr
David Luhr
2 months
Outside-in means writing high-level tests about the expected functionality, then testing and extracting smaller and smaller pieces of functionality. Inside-out means testing and writing the smaller pieces of functionality and composing them into larger functionality. (2/4)
1
0
0
@david_luhr
David Luhr
2 months
With testing code, there are competing approaches of outside-in vs. inside-out. Instead, I work outside-in *then* inside-out: (1/4)
1
0
1
@david_luhr
David Luhr
3 months
You'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.
0
0
1
@david_luhr
David Luhr
3 months
Playing 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.
0
0
0
@david_luhr
David Luhr
4 months
Staycations 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
0
0
3
@david_luhr
David Luhr
4 months
If 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.
0
0
0
@david_luhr
David Luhr
4 months
A 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.
1
0
0
@david_luhr
David Luhr
4 months
There'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.
1
0
0
@david_luhr
David Luhr
5 months
I 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`
0
0
1
@david_luhr
David Luhr
5 months
Sneak 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!
0
0
1
@david_luhr
David Luhr
5 months
I recently built a new homepage hero section on https://t.co/eZKcKI1IN7 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?
1
0
1
@david_luhr
David Luhr
5 months
Not 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!
0
0
0
@david_luhr
David Luhr
6 months
Read the full article on 10 things I've learned from 10 years of studying lean manufacturing:
0
0
1
@david_luhr
David Luhr
6 months
10 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 waste 5. Stop and fix 6. Make daily improvements 7. Prioritize improvements 8. Mistake-proof 9. Follow one-piece flow 10. Achieve flow
1
0
1