X Stats

Login Sign Up
@dhh

DHH

@dhh

824 Tweets
153 Following
589,458 Followers

Father of three, Creator of Ruby on Rails + Omarchy, Co-owner & CTO of 37signals, Shopify director, NYT best-selling author, and Le Mans 24h class-winner.

Date ↓ Tweet ❤️ 🔄 💬 👁 📝
Jan 03 Just so damn cool. https://t.co/878b9KpK9X 1.4k 19 70 63.5k 42 .
Jan 03 My favorite read of 2025 was Lars Brownworth's Lost to the West: The Forgotten Byzantine Empire That Rescued Western Civilization. Nothing gives you perspective like revisiting a thousand years of history. Much better than soaking in the present. https://t.co/5CM3ezi117 322 7 12 31.2k 270 .
Jan 03 Asked Codex if I had missed anything in Omarchy regarding the new Hyprland 0.53 syntax changes to layerrule and windowrule. It looked up the new syntax, found three missing changes, it was right, and I committed the change. https://t.co/RyE9UCSv1P 942 14 47 55.7k 247 .
Jan 03 We all have our own little, algorithmicly-curated feeds here on X now, but mine is bustling with great tech discussions, AI adventures, Linux enthusiasm, and generally good vibes. Probably the best X experience since pre-2012. 3k 56 130 79.3k 226 .
Jan 03 @lexfridman And those first drafts are improving at an astounding pace. So are the AI ergonomics. Working with @opencode, which gives the agents full bash, web, and LSP powers, has been a blast. Watching the thinking models nail a difficult bug is a revelation. What a time to love computers! 511 7 15 40.4k 292 .
Jan 03 @lexfridman I still write plenty of code by hand. Both out of necessity (the models aren't hitting what I want) and out of joy (writing code is fun!), but I've embraced the idea that getting a good draft really does speed things up quite often. 495 14 15 46.1k 244 .
Jan 03 We finished 2025 with FOUR NINES of uptime across all of our apps (and if it hadn't been for the CF outage it would have been five nines!!). Incredible reliability record after our cloud exit from the 37signals ops team 🎉 https://t.co/7JY1ICUXXh 858 18 24 41.8k 245 .
Jan 02 RT @robzolkos: Fizzy's been out about a month and there's already a growing community of tooling around it. 🚀 I made https://t.co/uNcJpstf… 0 13 0 0 140 .
Jan 01 AI opens many doors for Linux: Inscrutable error messages are plainly explained, esoteric config formats are easily decoded, and the full command of the system is made broadly available. Let's accelerate that for Omarchy! 823 33 68 78.5k 221 .
Dec 29 Working on ActionMCP for Rails. Started off asking Gemini 3, Codex, Opus, and M2.1 to give me an implementation. All of them got something working, but all took very different paths. Fascinating! Still going to rewrite the whole thing by hand, though, but the sketches helped. 916 24 59 82k 276 .
Dec 28 If you want to use this, here's a gist that's easier to copy. Going to keep tinkering with this before committing it to Omarchy. https://t.co/OqkVsM6iqH 239 7 7 34.8k 152 .
Dec 27 Starlink on @AlaskaAir is incredible! We really need to get @SAS onto this future. https://t.co/H66cpdPw5F 479 8 25 40.4k 106 .
Dec 26 Hate is not a crime. Emotions, thoughts and words, however repugnant to some, must be free in a free society. Actions are what laws and enforcement need to constrain. 2.7k 226 106 84.1k 166 .
Dec 24 The upcoming https://t.co/6SX7zmEyrA.creds will now also look for .env, which supports command interpolation, so you can fetch keys directly from 1password or the like in development: https://t.co/E3ueHDWGqj 263 6 7 32.7k 207 .
Dec 24 I recorded my gratitude for the most beautiful, poetic, and productive programming language ever made for Ruby's 30th birthday celebration in Tokyo. Thanks to @hsbt for the invitation 🙏 https://t.co/gDo4CDNMUq 1.1k 61 19 58k 209 .
Dec 24 Spent the entire ride marveling at how well everything is done, including the delightfully tactile knobs, buttons, and rollers. Way better than the awful haptic bullshit plagueing German cars costing 3x the Hyundai. Superb example of how great design isn't constrained by price. 367 3 20 46.9k 278 .
Dec 22 @FrameworkPuter Actually, this is so cool looking that I'll have to give it a try. Love that you can just order the $109 keyboard and install it yourself! https://t.co/5i6UP1D5Kn 56 0 2 21.4k 178 .
Dec 22 The translucent keyboard caps from @FrameworkPuter look seriously bad ass. I'm not sure I'm l33t enough to rock a keyboard without legends, but if ever there was an aesthetic reason to give it a try, this is it 😍 https://t.co/UtDPCY7ibw 323 5 29 43k 236 .
Dec 21 Rails 8.2 is getting a new combined credentials accessor via https://t.co/6SX7zmEyrA.creds that will search ENV first, then the encrypted credentials. Can also be reconfigured to add custom lookup backends. https://t.co/NIjYNQFnV7 443 28 11 69.5k 230 .
Dec 21 "Censorship reflects a society’s lack of confidence in itself." — Potter Stewart 1.1k 60 60 86.9k 80 .
Dec 21 Love that Ruby 4.0 is still polishing the core fluidity of the language. After all these decades, we can still find subtle improvements that delights the discerning human eye. https://t.co/i9oeJJWsUu 642 30 21 71.1k 199 .
Dec 20 I've been a dark-mode stan for years, but this week the draw of the light got me onto Omarchy's Flexoki theme. And it really is rather sweet. So clean too 😍 https://t.co/MUONEvq1ff 980 16 109 99k 180 .
Dec 19 We got Basecamp running on sqlite to work on Active Search. Unexpected side effect is that our entire test suite of 38,177 assertions can now run in 48 seconds on a @FrameworkPuter 395+ Desktop! Down from 1m15s when using MySQL. Crazy speed! https://t.co/VSw6PHzJ6K 1.2k 43 24 94.8k 265 .
Dec 19 RT @rails: Happy 30th anniversary to Ruby, the language that made @Rails possible, and continues to inspire developers and contributors aro… 0 184 0 0 140 .
Dec 19 The recordables pattern has been the single-most important architectural pattern we've used on both Basecamp and HEY. It's a key reason both code bases are still a joy to work on. Jeff breaks down the magic in this new podcast. https://t.co/RYB4lMr6Qp 581 40 19 86.7k 251 .
Dec 18 RT @rails: Secret mission: To present this year's Rails Luminary award to @marcoroth_ in person, Rails Core member @fxn traveled to the Rai… 0 18 0 0 140 .
Dec 18 The very first version of Basecamp launched without billing too! We gave everyone a 30-day trial back then, so we knew we had that long until the credit car processing had to be in place. Vintage scope management! 404 12 12 61.2k 213 .
Dec 17 RT @robzolkos: As more applications start using the new O'Saasy license, it felt useful to have a place to showcase them - so I made one. S… 0 6 0 0 140 .
Dec 16 Rails 8.2 will use Sec-Fetch-Site instead of cookie tokens for CSRF protection by default. Love seeing browsers compressing complexity like this. Stellar work by Rosa to extract this from Fizzy 👌https://t.co/eXgjulSASn 520 40 9 52.2k 218 .
Dec 16 Great to see the O'Sassy license being used in the wild already! And Fast Retro looks pretty sweet too 🤘 180 7 2 49.4k 104 .
Dec 16 Turned out to be a hassle to coordinate a separate fizzy-saas gem with the main fizzy code base, so we repatriated the gem within the primary repo. Can't fathom how people live with having to coordinate a fleet of microservices on cross-cutting deploys! https://t.co/hxTzGWr368 177 5 10 30.1k 277 .
Dec 15 Omarchy keeps improving with polish, fixes, and tweaks between the major versions. This is the real benefit of building together with a community instead of rolling it all alone. Sharp edges are whittled away before you even hit them. v3.2.3 out now! https://t.co/OffvtvL0IE 1k 40 40 63.8k 274 .
Dec 13 JZ is not only the stellar designer behind Fizzy and so much other work at 37signals, he also illustrates these fun, wholesome adventure books for kids. Great Xmas gifts! 214 1 3 70k 170 .
Dec 13 It took me a minute getting used to a tiling window manager, but going back even just for a quick spell is absolutely murder. Manually move windows around with a mouse now seem so savage. Losing windows underneath others a comedy. 1.3k 40 96 99.1k 230 .
Dec 11 Rails World in Austin in September! We are already busy making new gifts at 37signals for the big exchange 🎁🎅🎶 198 3 3 36.7k 110 .
Dec 11 A freedom of expression that excludes the right to offend people is no freedom at all. It's also just terrible law in general. Leaving it up to the offended party to determine whether a crime has been committed or not? Blasphemy 2.0. 1.3k 50 25 27.4k 233 .
Dec 11 The Dutch say the darnedest things: ‘Freedom of expression is one of the fundamental rights...,’ the department said. ‘But there are limits to that freedom… and one of those says you may never incite discrimination or offend another population group.’ https://t.co/qx7JtcDC1L 1.2k 50 45 73.5k 275 .
Dec 11 We live in glorious time for browser progress. After so many years of stagnation, the last five or so have been incredible. Here's Sec-Fetch-Site killing the need for manual CSRF protection. Viva la web! https://t.co/ieFuw6KWmv 513 22 8 49.7k 227 .
Dec 11 Any definition of open source that doesn't include this flow is broken. I've used many a SaaS that I wish was this open source, so I could just fix my own annoyances on the spot and submit a PR! 441 6 14 57.4k 194 .
Dec 11 The most satisfying part of programming for me is the refactoring phase. You've made it work, so now you can make it beautiful. Weighing every comma, every colon, every character. And working in Ruby makes this refining flow all the more enjoyable. https://t.co/fodKlGOvVS 2k 90 85 91.8k 272 .
Dec 10 RT @robzolkos: Demo of the new Fizzy API - asking Claude to generate a 5 city itinerary for an Australian vacation - creating a board in Fi… 0 7 0 0 140 .
Dec 10 Shopify's new SimGym is AI applied right: Being able to get statistically significant A/B tests done quick without the volume of a huge store is crazy. https://t.co/EsaMclBmNn 888 39 31 63.1k 175 .
Dec 10 Fizzy's API is now live! Manage boards, cards, tags, and more. Tie it together with webhooks, and you have everything you need to sync content in both directions. https://t.co/Z9aLWQopLW 333 20 7 59.6k 186 .
Dec 10 Fizzy's open source is not just seeing contributions on the backend, but UI improvements as well. Really nice level up turning the confirmation popups into proper overlays by Justin Starner 👌 (before v after) https://t.co/hgkgfONhjl https://t.co/yk35qdD3Li 394 10 11 44.2k 257 .
Dec 08 Again, fascinates me to no end that the main objection to slim phones is "I need more battery life!". Bro, you can get 5h+ of screen-on time with these! If you need more than that, you have a serious addiction and should seek help 😄 203 1 22 26.6k 232 .
Dec 08 Fizzy feels fast, delightful, and fun. All with a minimum of JavaScript. We have more lines of CSS than we do JS! Just 55 tiny Stimulus controllers. You just don't need much with Hotwire. https://t.co/UldWrFjDBE https://t.co/us7kIpQ4XG 566 20 34 73.3k 235 .
Dec 08 Fizzy is fully free to self-host, and now we have much better instructions for how to do just that. Next step will be a more Campfire-like process where the entire self-hosting process is productized, but even as-is, it doesn't take much! https://t.co/XlaJRj0Ydt https://t.co/p5pmMRrMTt 440 22 21 39.6k 286 .
Dec 08 The new ultra-slim smartphones are apparently selling poorly. Both the iPhone Air and the Samsung Edge look like commercial flops. But what a shame: This is the biggest leap forward in ergonomics and feel for phones in many years. Love my S25 Edge! 468 9 90 57.3k 248 .
Dec 07 The Danes do not seem bothered by the "confusion" of blue checkmarks. X is beating every domestic news app on downloads now. Maybe the EU just need to try a little harder reeducating them?? https://t.co/lLI8zWGKSt 1.3k 28 85 46.9k 213 .
Dec 07 Europe is full of incredible people, has an incredible history, and is more than capable of adopting better ideas for how to run a competitive economy and retain a cohesive culture. It is in no way doomed to stay in the current hole forever. But it has to stop digging. 2.9k 210 104 95.3k 269 .
Dec 07 Five thousand criminal complaints! Including one for calling Merz a "filthy drunk", which lead to a house search! Such free speech, such strong leader. https://t.co/9SxDcT6LTm 318 6 11 22.8k 175 .
Dec 07 "A majority of French people (54%) and half of Italians (50%) believe the EU is generally heading in the wrong direction... Just 21% of French people and 30% of Italians believe that membership of the EU has made their countries better off." https://t.co/y2mB2RNMRA 1.3k 83 61 50.1k 265 .
Dec 07 This also wouldn't be the first time those angry at X would seek to punish Musk directly, though. Brazil fined SpaceX(?!) when they couldn't collect on X. https://t.co/sKZMedStWq 218 2 8 29.8k 178 .
Dec 07 Now it's possible that both the person receiving the fine (Musk) and a politician responsible for the fine (Loiseau) is confused about who has to pay, but you'd think both would have more insight than most! 275 1 10 32.6k 206 .
Dec 07 Government party just declared support for Denmark stepping out of The European Convention on Nationality from 1997, so criminals with dual citizenship can have their Danish passport revoked upon conviction. Remigration politics are moving fast! https://t.co/x2AoIvGjZ4 1.7k 107 24 78.6k 269 .
Dec 06 Majority of Danes are also ready to expel foreigners who've lost the right to stay in Denmark even if it violates The European Convention on Human Rights (ECHR). https://t.co/uVTZOiloAm 1.1k 21 20 85.2k 185 .
Dec 06 RT @micsolana: “sorry, we passed a law that says you have to do totalitarian political censorship so we can keep doing endless mass migrati… 0 706 0 3 140 .
Dec 06 RT @durov: The EU imposes impossible rules so it can punish tech firms that refuse to silently censor free speech. We saw the same in Franc… 0 8.4k 0 5 140 .
Dec 06 Love the Danish custom of bringing little national flags to the airport and waving them proud when your family returns. Such wholesome national pride 🇩🇰 1k 8 19 41.6k 152 .
Dec 05 The EU slaps X with a $140m fine for "confusing users with blue checkmarks" while its citizens choose to trust X as their news source. Meanwhile, traditional media outlets there will write befuddled stories about the mystery of falling trust in the old institutions. 1.6k 77 66 82.1k 266 .
Dec 05 Fizzy isn't just for us software nerds. It's for everyone with issues. And issues are everywhere, all the time, all over the places. Capturing them, tracking them, and dealing with them really couldn't get much easier! 238 9 10 45.6k 218 .
Dec 04 If you make open source software, you are the bearer and bringer of gifts. Don't let anyone tell you how to define "open" or "source". Just pick a license, stick to the terms, and tell people they can accept the code with gratitude or they can fuck right off. 1.6k 83 56 79.8k 259 .
Dec 04 Open source is amazing in all it's many shapes and sizes. I use a lot of GPL software, even if I don't care to use that license for my own work. And lots of folks are already contributing to Fizzy under O'Saasy terms. Accept the gifts or don't 🤷‍♂️ https://t.co/XlaJRj1w31 167 1 5 26.9k 272 .
Dec 04 Open source is when the source is open. Simple as that. The license then determines what rights are given or reserved. The lion's share of my open source work is under MIT, the most permissive license. Love it. I've done none under GPL, because I don't need code dump charity. 300 8 16 33.8k 276 .
Dec 04 It takes a particular kind of hybris to think you can narrow down the definition of "open" and "source" to match your pet interpretation, and believe everyone else just has to bow to that dominion. No. 208 2 6 15.6k 201 .
Dec 04 Musk nailed this with his "did you think I was going to be a chill, normal dude" quip on SNL. Big breakthroughs more often than not come from maniacal obsession, unadjusted personalities, and/or arrogant delusions. America nurtures these seeds best. https://t.co/BOjEbK7TU3 247 5 5 39.5k 273 .
Dec 04 Hacker News can always be counted on for some solid virtue theater. It produces more of Aesop's sour grapes than any other wantrepreneur space. So many aggrieved techies with a need to rationalize why they haven't made it to the moon and why other, lesser, fools have. SAD! https://t.co/al3fOA0hEg 610 16 94 54.9k 297 .
Dec 04 Jason is so committed to bring color back to modern web design that our homepage literally pops a new vivid one every time you reload 😄 https://t.co/YtIREI07ya https://t.co/CuaNEXebNE 873 23 53 82.4k 183 .
Dec 04 So much of the software that people are forced to use at work is a miserable slog. A wasteland of complexity where more cruft accumulates with every enterprise sale made. It feels like our moral obligation to bring a little sunshine and color into that dreary world. https://t.co/Pn3HcTZToY 997 46 54 58.8k 290 .
Dec 03 Vanilla Rails is all you need. 483 23 14 74.8k 30 .
Dec 03 So much of modern software suffers from the same great grayification of the world that's killing colorful cars, houses, and cafés. Fizzy is a zag to that zig. Full of colors, full of fun, and even (see if you can find it!) full of sound. 278 11 13 36.6k 237 .
Dec 03 We should encourage and celebrate such corporate brand building and benevolence. Modern-day Carniegie, Rockefeller, and Vanderbilt vibes. Instead of yet another wing of an art museum, fund open source monuments like Bun! 586 8 10 36.4k 220 .
Dec 03 Loved getting a code review from @adrienpoly on the upcoming API for Fizzy alerting me to Rails' built-in authenticate_or_request_with_http_token. Didn't even know we had that! https://t.co/Z9aLWQopLW https://t.co/DvHZ6ir3pP 378 8 5 39.3k 224 .
Dec 03 "Very little software is ever the final word on solving interesting problems. Even products that start out with great promise and simplicity tend to accumulate cruft and complexity over time. A healthy ecosystem needs a recurring cycle of renewal." https://t.co/kwwdM8Gfz4 425 26 17 54.8k 272 .
Dec 02 Hopefully Claude will be able to internalize some of these patterns for its Ruby learning. Because an entire git history with atomic commits teaches you a lot more about code design than just the final source dump! 104 4 3 18k 214 .
Dec 02 Fizzy's entire git history is available for all, so @robzolkos had Claude summarize the progression, and it nailed my favorite repo activity: Collapsing concepts and compressing complexity! https://t.co/YhRT5fDr8M https://t.co/9gFoSOmUOE 249 10 15 28.6k 237 .
Dec 02 To make this happen, we've also started work on Active Record Search with full-text implementations for both SQLite and MySQL (Trilogy). https://t.co/Gi1yaVFB2O 84 0 2 17k 160 .
Dec 02 This is also why we're running Fizzy on both MySQL and SQLite. The SaaS version runs on MySQL, the on-prem version just does with SQLite. And SQLite files will be the transport layer between the two modes of running Fizzy. https://t.co/fdjgqUqUXp 71 0 3 19.9k 246 .
Dec 02 Fun fact: Fizzy is using UUIDv7 primary keys. Plan is to offer import/export between our SaaS hosting and people's own on-prem installations. Start on SaaS, grab your own SQLite DB, then run it yourself (or the other way!). Will upstream to Rails soon. https://t.co/hx8DRd28OC 431 15 19 46.8k 276 .
Dec 02 Fizzy is split into a core codebase that anyone can run on their own and then our hosted SaaS setup. We've published the source to both! So even if you can't run fizzy-saas (since it relies on internal gems), you can see how we do the split. https://t.co/7WaOiytK7G 183 8 5 23.4k 265 .
Dec 02 RT @robzolkos: Wrote some notes on Fizzy's webhook system. I'm sure the first of many deep dives I will do on the codebase. A blessing fo… 0 9 0 0 140 .
Dec 02 Fizzy is deployed in three different data centers: US Mid-West (Chicago), US East (Ashburn), and EU (Amsterdam). Our writer is in US East, and the two other DCs are for reading. It's fast! P95 response time is 50 for readers, 80ms for writer! https://t.co/M6IkER9vUW 246 6 11 36.9k 266 .
Dec 02 We're barely a few minutes into the public life of Fizzy, and @marcoroth_ has already tidied up some HTML errors, which we've already deployed to production in 124 seconds with Kamal 🤘 https://t.co/lYwPHqLBrg https://t.co/5XjCHUNsJz 432 11 10 49.3k 232 .
Dec 02 Fizzy is released under the O'Saasy License. Which is basically MIT with a carve-out for the original licensor to monetize the SaaS aspect of the code base. Feel free to use! https://t.co/guhoBdMBXC https://t.co/BtdlJBSC6n 694 26 31 86.8k 222 .
Dec 02 Like, I'm working on this PR for adding a basic API with access token keys. We're going full fishbowl on this product! There's no backroom repos here. All the work is out in the open. https://t.co/Z9aLWQopLW 141 1 6 23.5k 207 .
Dec 02 And of course the entire source code is available on GitHub as well. Any PRs that are accepted here will go into both the SaaS version and the version you can run yourself. Because it's the same codebase! https://t.co/XqA10tGFyO 173 5 6 79.9k 228 .
Dec 02 Writing Ruby code by hand in a text editor feels like such a luxury. Maybe this will soon be a lost art, but that's just all the more reason to enjoy the privilege to its fullest while we still have it. https://t.co/eJxIhJAIbd 969 45 56 52.3k 226 .
Dec 02 Charging our trust batteries by spending time together at regular all-company meetups is what allows remote work to work at 37signals. They allow for our written communication to be read with good intentions without copious amounts of flowery flattery. https://t.co/gcTIYHFwWc 846 40 22 66.6k 276 .
Dec 02 Campfire 1.3 has been released. Now includes a ban hammer, so it's easier to invite the world to a chat room without fearing it'll be overrun by spammers or savages. https://t.co/IIsmJWsFVA 275 6 10 32.4k 189 .
Dec 01 Fizzy is almost ready to share! So while working through the last stretch, there's only one correct soundtrack: Eli & Fur. Up to the HEY launch, I had Something Was Real on never-ending repeat. For Fizzy, it's In Too Deep. https://t.co/qGgnw8c9RM 133 3 10 31.3k 250 .
Dec 01 "Shopify is the patron saint of Ruby on Rails. Its infrastructure team is the backbone of our ecosystem, and its continued success the best case study of how far you can take this framework and language. They deserve a gawd damn parade for all they do." https://t.co/QuRCRgZW8K 972 59 23 79.9k 277 .
Dec 01 Rails is getting schematized json attribute accessors with has_json and has_delegated_json. Very helpful for settings, flags, and other data bags that can grow without migrations, need defaults, and typed assignment from UI strings. https://t.co/dOrRQHbqqp https://t.co/Z8Pycz2J2T 574 48 23 66.4k 280 .
Nov 28 Archive version (without the paywall): https://t.co/VQaI3RxP5m 159 3 4 33.7k 62 .
Nov 28 Seeing the Shopify globe running on the Vegas sphere is also pretty crazy. https://t.co/InsISsYfUI 176 2 1 44.1k 98 .
Nov 27 Europe can of course still benefit from cherry-picked immigration. But it would do well to start by luring back its own emmigrants to America and elsewhere. They have much of the ambition, capital, and skills needed to revive Europe. Much easier to reintegrate too! 363 10 12 24.3k 265 .
Nov 27 Europe's other problems — like an ageing population, low birthrate, moribund business environment — just can't be fixed by settling vast numbers of culturally-incompatible people who take more than they give. This shouldn't be controversial. The math is plain. https://t.co/xBxfnAORKZ 740 38 12 33.7k 284 .
Nov 27 So much of the current political upheaval in Europe, and the repressive response it has produced, is downstream from the failure and tragedy of mass immigration. The union will remain lost until it turns the ship(s) around. 1.2k 60 48 49k 223 .
Nov 26 RT @itsfoss2: We need more such people! 🤗 🐧 https://t.co/o1ztoN36If 0 236 0 0 67 .
Nov 26 It's equally remarkable how well other groups do. Japanese people literally have the lowest crime stats of any tracked group in Denmark. Americans almost as low. Immigrantion works fine when you cherry pick the very best from high-performing countries. 1.3k 30 38 37.9k 252 .
Nov 21 As if you needed any more reasons to love Framework, know that their site and store is all built with Rails 🤘 567 7 15 75.5k 109 .
Showing 1-100 of 554 tweets
← Prev 1 2 ... 6 Next →