Top all-time · #1082
Arthur O’Dwyer
Personal blog · quuxplusone.github.ioprogramming
Arthur O’Dwyer is a personal blog at quuxplusone.github.io about programming. Since 2018, 65 different Hacker News readers have linked it 221 times, most often “Clang++ `[[trivial_abi]]` 101”. It is still writing: the last post was on 2026-10-17, and you can follow it by feed.
Most-linked posts?
- Clang++ `[[trivial_abi]]` 1014 people · 5 mentions · first linked 2018-05-03
- When can the C++ compiler devirtualize a call?4 people · 4 mentions · first linked 2021-02-15
- Castlequest exhumed “Lost game” Castlequest (1980) has been found4 people · 4 mentions · first linked 2021-04-08
- The best engineering interview question I've ever gotten4 people · 4 mentions · first linked 2022-01-29
- Don’t put -Weverything in your build flags4 people · 4 mentions · first linked 2018-12-06
- C++2a Coroutines and Dangling References3 people · 3 mentions · first linked 2019-07-18
- Nash equilibria in Ballmer's binary-search interview game3 people · 3 mentions · first linked 2024-09-04
- Reasons to pass std:string_view by value3 people · 3 mentions · first linked 2021-11-09
- Thoughts on “The C++ Rvalue Lifetime Disaster”2 people · 4 mentions · first linked 2020-03-06
- What Is the “Vector Pessimization”?2 people · 3 mentions · first linked 2022-08-27
What Hacker News says?
I do appreciate the effort you went to for this, but you make a lot of very strong claims that depend on very obscure minutia and unfortunately they end up being false under careful scrutiny. >But who says my fancy pointers will even necessarily map 1:1 to a linear (and contiguous!) pointer space? The standard as of C++11 does. std::vector<T> provides the member function T* data() which is required to return a point…
Comment linking /draft/fancy-pointers.html
on ““ISO obstructs adoption of standards by paywalling them””Submitted Slack’s new WYSIWYG input box is terrible as a story · 2776 points
HN discussionWhat this comes down to is can the candidate: figure out how to build the project, grep to existing implementation and copy, paste, change a plus to an asterisk. And also, can they articulate the work-to-be-done this simply. While that’s the gist of it, it hardly seems that’s quite enough from the author’s solution, nor should it be enough for an interviewer. The question isn’t how to write, or copy paste a function…
Comment linking /blog/2022/01/07/memcached-interview-solution/
on “The best engineering interview question I've ever gotten”Submitted The best engineering interview question I've ever gotten as a story · 893 points
HN discussion> I hate coding interviews but I am sympathetic to people who want to do them because I've met people who are such good bullshitters that they could fool most people. If you're talking about someone with no working experience and who claims to be self-taught, you really have to make them write code. The choice is not limited to made up toy problems vs not testing coding skills at all. You can give them real problems…
Comment linking /blog/2022/01/06/memcached-interview/
on “The FizzBuzz that did not get me the job”Submitted The use of `class` for things that should be simple free functions as a story · 408 points
HN discussionkeep in mind though that -Weverything is not intended to be used in production: https://quuxplusone.github.io/blog/2018/12/06/dont-use-wever...
Comment linking /blog/2018/12/06/dont-use-weverything/
on “size_t-to-int vulnerability in Linux’s filesystem layer”Submitted Phrase origin: Why do we "call" functions? as a story · 305 points
HN discussionIndeed, RAII is a zero-cost abstraction compared to running the same destructors manually. On the other hand, C++ makes it really easy to write programs that copy and destroy things when it isn't necessary. For example, if a function takes a `std::string` as an argument (by value), any string you pass in will be copied into a new allocation, which will then have to be deallocated. That's fine if the function really…
Comment linking /blog/2018/05/02/trivial-abi-101/
on “Why is Rust slightly slower than C?”Submitted Best engineering interview question I've gotten as a story · 186 points
HN discussionSeems like you don't need an LLM, you just need a human who (1) likes reading Stoker and (2) touch-types. :) I'd volunteer, if I didn't think I'd be duplicating effort at this point. (I've transcribed various things over the years, including Sonia Greene's Alcestis [1] and Holtzman & Kershenblatt's "Castlequest" source code [2], so I know it doesn't take much except quick fingers and sufficient motivation. :)) [1] h…
Comment linking /blog/2021/03/09/castlequest/
on “An amateur historian has discovered a long-lost short story by Bram Stoker”Submitted Don’t blindly prefer emplace_back to push_back as a story · 178 points
HN discussionScott Kim also did ambigrammatic poster designs for "Martin Gardner's Celebration of Mind" for art least four years running: https://quuxplusone.github.io/blog/2020/10/18/scott-kim-gard...
Comment linking /blog/2020/10/18/scott-kim-gardner-ambigrams/
on “Ambigr.am”Submitted Don't blindly prefer `emplace_back` to `push_back` (2021) as a story · 150 points
HN discussionThe advice to use -Weverything is very bad advice. See, e.g., https://quuxplusone.github.io/blog/2018/12/06/dont-use-wever... Using -Weverything other than for a one-off, manual build, is a sure fire way to result in one or several of 1) hacky code that works around some compiler author's style preferences, 2) less safe code because of the workaround hacks, or 3) coworkers quickly learning to ignore or disable (e.g.…
Comment linking /blog/2018/12/06/dont-use-weverything/
on “The State of Software Security in 2019”Submitted Nash equilibria in Ballmer's binary-search interview game as a story · 145 points
HN discussionMight be your lucky day. Just further down the thread Jabl posted: > Recently an old text adventure game 'Castlequest' from 1980 was recovered ( https://quuxplusone.github.io/blog/2021/03/09/castlequest/ ), and there are even some efforts to modernize it ( https://gitlab.com/apthorpe/Castlequest ).
Comment linking /blog/2021/03/09/castlequest/
on “1970s mainframe RPGs we can no longer play”Submitted Const all the things? as a story · 129 points
HN discussionRecently an old text adventure game 'Castlequest' from 1980 was recovered ( https://quuxplusone.github.io/blog/2021/03/09/castlequest/ ), and there are even some efforts to modernize it ( https://gitlab.com/apthorpe/Castlequest ).
Comment linking /blog/2021/03/09/castlequest/
on “1970s mainframe RPGs we can no longer play”Submitted The use of ‘class’ for things that should be simple free functions (2020) as a story · 106 points
HN discussionI've taken a stab at analyzing the game for 3, 4, and 5 numbers here: https://quuxplusone.github.io/blog/2024/09/04/the-game-is-fl... There's obviously a huge gap between the 5-number game and the 100-number game; it's possible that the best mixed strategies settle down as the number of choices gets larger, or (for all I know) it's possible that the best mixed strategies get crazier and crazier. I'd love a ping if a…
Comment linking /blog/2024/09/04/the-game-is-flawed/
on “Steve Ballmer's incorrect binary search interview question”Submitted Bit Patterns of Float as a story · 103 points
HN discussionJumping on the footgun bandwagon, one I had always known, but never realized how bad of a design decision it was was "the c++ rvalue lifetime disaster" [0]. The talk linked in [0] has a different conclusion, but describes the problem well. Basically, the lifetime aspects of r/l-values are improperly coupled to the "can I scavenge the internals?" aspect (via const). R-values should not have been promoted to const-ref…
Comment linking /blog/2020/03/04/rvalue-lifetime-disaster/
on “My favourite C++ footgun”Submitted What =delete means as a story · 99 points
HN discussionThat's pretty much what the original poster does in Part 2, although inevitably the actual source code is a little more complicated than that. https://quuxplusone.github.io/blog/2022/01/07/memcached-inte...
Comment linking /blog/2022/01/07/memcached-interview-solution/
on “Best engineering interview question I've gotten”Submitted Noexcept affects libstdc++’s unordered_set as a story · 95 points
HN discussion> My kids are all on Linux computers That is great to hear. My kids are both on pi 4s, but we customized the Debian distribution quite a bit to optimize its hardware acceleration capabilities and to overclock the hardware as much as possible. The pi boots from a fast nvme usb drive and i/o peripherals are connected via a fast usb hub. They are cooled by the ice tower [1]. They are both using exwm [2] and do not requ…
Comment linking /Advent/play.html
on “Sugar: An activity-focused, open-source software learning platform for children”Submitted Covariance and contravariance in C++ as a story · 94 points
HN discussionRust's ABI needs a lot of work before it's frozen. They're leaving performance on the table. Consider this code: https://rust.godbolt.org/z/jN2AA_ pub fn square(num: i64) -> i64 { return num * num; } // mov rax, rdi // imul rax, rdi // ret pub fn square2(num: i64) -> Result<i64, Box<dyn std::error::Error>> { Ok(num * num) } // mov rax, rdi // imul rsi, rsi // mov qword ptr [rdi + 8], rsi // mov qword ptr [rdi], 0 //…
Comment linking /blog/2018/05/02/trivial-abi-101/
on “Notes on Type Layouts and ABIs in Rust”Submitted The algebraic structure of Infinite Craft as a story · 93 points
HN discussion