T

TartanLlama

blog.tartanllama.xyz · Personal blog · on HN since 2017

TartanLlama is the blog of Sy Brand, who writes about C++, debuggers, compilers, and GPU programming.

What HN saysHN repeatedly recommends its Writing a Linux Debugger series as a good way to learn about debuggers. It also links the C++ initialization post.
31HN people shared it
11linked it in comments
30stories submitted
531story points
1 year agolast shared
2017people per year2026

Most-shared posts

  1. 1
    Writing a Linux Debugger (2017)
    11 people · 41 points · first shared 2018 · 2 comments on HN
  2. 2
    Writing a Linux Debugger
    4 people · 9 points · first shared 2017 · discussion on HN
  3. 3
    Initialization in C++ is bonkers (2017)
    3 people · 191 points · first shared 2020 · 249 comments on HN
  4. 4
    Spaceship Operator
    3 people · 11 points · first shared 2018 · discussion on HN
  5. 5
    Learning C++
    3 people · 5 points · first shared 2017 · discussion on HN
  6. 6
    Writing a Linux Debugger Part 2: Breakpoints
    2 people · 143 points · first shared 2017 · 15 comments on HN
  7. 7
    Do compilers take inline as a hint?
    2 people · 67 points · first shared 2018 · 21 comments on HN
  8. 8
    Accelerating your C++ on the GPU with SYCL
    2 people · 4 points · first shared 2017 · discussion on HN
  9. 9
    Sycl
    2 people · first shared 2017
  10. 10
  11. 11
    Guaranteed copy elision in C++17 does not elide copies
    1 people · 2 points · first shared 2018 · discussion on HN
  12. 12
    Custom Alias Analysis in LLVM
    1 people · 1 points · first shared 2018 · discussion on HN
  13. 13
    Meeting C++17 Trip Report
    1 people · 1 points · first shared 2017 · discussion on HN
  14. 14
    Building my first custom keyboard
    1 people · 1 points · first shared 2017 · discussion on HN
  15. 15
    Initialization is bonkers
    1 people · first shared 2017

What HN people wrote when they linked it

thasso · 2025-06-11
If you are interested in debuggers, there was a post series by Sy Brand a few years back: https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ Eli Bendersky also wrote about debuggers (I think his post is a great place to start): https://eli.thegreenplace.net/2011/01/23/how-debuggers-work-part-1 I was fascinated with debuggers a while back exactly because they were so mysterious to me. I then wrote a ptrace debugger myself [1]. It features pretty simple implementations of the most common stuff you would expect in a debugger. Though I made the grave mistake of formatting all the code in GNU style. [1]: https://github.com/thass0/spray/tree/main/src
SebastienWae · 2023-09-27
Yes, the "Writing a Linux Debugger" series in C++. https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ And more generally there is "The Debugging Book" in python. https://www.debuggingbook.org/
323 · 2022-11-28
Less known fact is that it's called C++23 because there are 23 ways to initialize a variable. Of course, it's a joke. In reality C++23 has only 20 ways to initialize a variable: https://www.cppstories.com/2022/init-string-options/ https://blog.tartanllama.xyz/initialization-is-bonkers/
elvis70 · 2020-10-18
See also the "Writing a Linux Debugger" series of posts in which a source-level debugger is implemented: https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/
cesarb · 2018-04-01
Having started using the Internet in the 90's, and thus still remembering Geocities-era websites, I loved that they did this as a webring (https://en.wikipedia.org/wiki/Webring): each blog post has a link to the next one, making a singly-linked circular list. Starting with this one, we have: - http://www.bfilipek.com/2018/04/deprecating-pointers.html - http://www.modernescpp.com/index.php/no-new-new - https://www.fluentcpp.com/2018/04/01/cpp-will-no-longer-have-pointers/ - https://blog.tartanllama.xyz/no-pointers/ - https://arne-mertz.de/2018/04/raw-pointers-are-gone/ And it circles back to this one.
autopoiesis · 2017-09-11
Also there's work towards a pure C++ abstraction layer for programming these accelerators, called SYCL [0]. It lets you define your compute kernels using normal C++ lambdas or functions, and then automatically infers the data dependencies to do the kernel execution. In particular, it provides an implementation of the C++ "Parallel STL" [1] (some intro slides at [2]), which in turn provides "execution policies" for various standard library functions, such as sorting. The aim is precisely the kind of thing you're talking about! [0] I found a nice intro at https://blog.tartanllama.xyz/sycl/ [1] http://en.cppreference.com/w/cpp/experimental/parallelism [2] https://www.khronos.org/assets/uploads/developers/library/2016-superco…
jaiprabhu · 2017-09-07
Check out this recent post by Simon Brand on this subject - https://blog.tartanllama.xyz/learning-cpp/
autopoesis · 2017-08-25
Have you had a look at SYCL? I found a nice intro at [1]. Hopefully at some point soon there's an implementation of it for nVidia GPUs, too; right now I've only come across support for Intel and AMD OpenCL using Codeplay's compiler [2]. But it seems quite promising! [1] https://blog.tartanllama.xyz/sycl/ [2] https://www.codeplay.com/products/computesuite/computecpp
drudru11 · 2017-06-12
This was published earlier and in a much more readable format at: https://blog.tartanllama.xyz/c++/2017/01/20/initialization-is-bonkers/
Rusky · 2020-10-20
I really don't see how Rust has most of C++'s problems. Slow compiler, sure, though things are changing. Most complex languages in history? Only if you squint at it from 10000 feet and ignore what the complexity is doing. C++ has approximately eighteen different partially-overlapping categories of variable initialization, many of which are legacy-but-still-used! [0] And some of those categories have changed their boundaries every language version since C++11 (based on the definition of "aggregate"). C++ has three to five partially-overlapping kinds of type inference all in active use (auto, decltype(id), decltype((expr)), decltype(auto), template argument deduction)! This is interleaved with name lookup and overload resolution (below), so if some subexpression isn't compiling how you expect, you have a vast space of language features potentially to blame. C++ has so many kinds of name lookup and namespacing that I'm not even sure how to count them. There's unqualified lookup, argument-dependent lookup, qualified lookup, class member access, etc. Sometimes you can't refer to things defined later (outside a class) and sometimes you can (inside a class). There is even undefined behavior if you mess up namespacing! (Undiagnosed ODR violations are every experienced C++ programmer's nightmare.) C++ has ad-hoc overload resolution based on un-scoped identifiers, which even crosses namespace boundaries using one of the above name lookup modes. It has two kinds of user-defined…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close