J
Joe Damato
timetobleed.com · Personal blog · on HN since 2008
Joe Damato writes deep technical posts on Linux internals, Ruby VM performance, debugging, and binary formats.
What HN saysCommenters call his posts fascinating and say they show the value of understanding what's under the hood, though he posts infrequently.
39HN people shared it
15linked it in comments
52stories submitted
2.0Kstory points
5 years agolast shared
2008people per year2026
Most-shared posts
- 1The Broken Promises of MRI/REE/YARV5 people · 151 points · first shared 2011 · 65 comments on HN
- 2Homepage5 people · first shared 2010
- 3Rewrite your Ruby VM at runtime to hot patch useful features3 people · 25 points · first shared 2009 · 10 comments on HN
- 4An obscure kernel feature to get more info about dying processes2 people · 132 points · first shared 2010 · 28 comments on HN
- 5The craziest bug you never heard about from 2008: A Linux threading regression2 people · 114 points · first shared 2013 · 32 comments on HN
- 66 Line EventMachine Bugfix = 2x faster GC, 13x requests/sec2 people · 107 points · first shared 2009 · 35 comments on HN
- 7Dynamic Linking: ELF vs. Mach-O2 people · 62 points · first shared 2010 · discussion on HN
- 8GCC optimization flag makes your 64-bit binary fatter and slower2 people · 61 points · first shared 2010 · 37 comments on HN
- 9Fix a bug in Ruby’s configure.in and get a ~30% performance boost2 people · 60 points · first shared 2009 · 11 comments on HN
- 10Fixing Threads in Ruby 1.8: A 2-10x performance boost2 people · 51 points · first shared 2009 · 14 comments on HN
- 11How do debuggers keep track of the threads in your program?2 people · 37 points · first shared 2012 · 3 comments on HN
- 12String together global offset tables to build a Ruby memory profiler2 people · 29 points · first shared 2010 · discussion on HN
- 13Defeating the Matasano C++ Challenge with ASLR enabled2 people · 23 points · first shared 2009 · discussion on HN
- 14Notes about an odd, esoteric, yet incredibly useful library: libthread_db2 people · 9 points · first shared 2013 · discussion on HN
- 15A closer look at a recent privilege escalation bug in Linux (CVE-2013-2094)2 people · 7 points · first shared 2013 · discussion on HN
What HN people wrote when they linked it
jcdavis · 2017-02-21
Pretty sure he writes all of the linux internals posts. He also has a bunch of great ones on his blog http://timetobleed.com/
earl · 2011-10-17
Joe Damato has a great albeit infrequently updated programming blog, http://timetobleed.com/ . I think he wrote the memprof ruby gem. Posts HN may really enjoy:
an obscure kernel feature to get more info about dying processes [1]
a presentation from some ruby conf, particularly slide set 2 which details how memprof works and talks about the abi, etc [2]
plus a bunch of discussion of profiling tools to look at exactly what gcc or your vm of choice are doing. Highly recommended.
[1] http://timetobleed.com/an-obscure-kernel-feature-to-get-more-info-abou…
[2] http://timetobleed.com/slides-from-mwrc-2010/
testing12341234 · 2012-08-20
If you go directly to the domain, http://timetobleed.com/, then you can see an image of the post, along with a nice message to Rack Space.
jfarmer · 2012-04-04
If you've never worked with Joe, this is the kind of nonsense he does in his sleep.
I first worked with Joe four years ago. He joined the team knowing no Ruby. What did he do his first week? Diagnose and patch a pretty big bug in MRI's threading implementation.
His blog is equally intense: http://timetobleed.com
prosa · 2010-02-18
Joe Damato's posts are always fascinating reminders of the benefit of understanding what's under the hood.
http://timetobleed.com/
silentbicycle · 2013-09-16
Garbage collection is a particularly cross-cutting implementation issue, and tends to interfere with all kinds of abstraction. You're essentially making a system that knows which specific ways abstraction can be broken safely, so that you can defer resource management to it in the future. Retrofitting a GC is even harder. You can bolt on a conservative collector (like boehm-gc), sure, but that can lead to many unexpected performance issues (see e.g. http://timetobleed.com/6-line-eventmachine-bugfix-2x-faster-gc-1300-re…
Writing a virtual machine for a GC'd language and then trying to give it a portable, reasonably convenient C API convinced me that it's a significantly harder issue than most people realize. (Particularly after scrapping my third prototype!) The C API also impacts many things, and tends to bring up nasty edge cases in the GC.
Lua seems to have settled on a design that works unusually well, and is worth studying. Still, Lua can safely cut corners that Python and Ruby cannot - they have threads, which also break a lot of assumptions.
MaulingMonkey · 2014-08-25
Relying on "probably" is completely the wrong foot to start out on, IMO. It leads to this kind of craziness: http://timetobleed.com/the-broken-promises-of-mrireeyarv/
FooBarWidget · 2013-03-16
Hm, that's unfortunately to hear. Ruby 1.8 implemented green threads by using stack copying. It was discovered that this resulted in significant performance hits: http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-b…
loeg · 2012-02-10
One of the biggest problems with this style of "scan all memory" GC is that you have to stop all threads (flush all pointers to memory) to perform a collection. Pointers held in registers in other active threads are inaccessible to the GC thread.
Failing to stop the world (or ensure all pointers are in memory rather than registers) can result in live objects being collected. This happened to Ruby at one point: http://timetobleed.com/the-broken-promises-of-mrireeyarv/
Edit: This boils down to breaking the compiler's model of memory as specified by the C standard; all bets are off.
beagle3 · 2011-12-20
I'm not a ruby person, and this post by Joe Damato made me want to stay as far away as possible from Ruby -- but perhaps it would be helpful in your case
http://timetobleed.com/the-broken-promises-of-mrireeyarv/
calloc · 2011-01-12
Something along these lines: http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-us…
thras · 2009-10-16
The first link mentioned in the article was a very interesting read.
http://timetobleed.com/defeating-the-matasano-c-challenge-with-aslr-en…
It's a fairly clear explanation. Before the language warriors come out in force, I'll mention that it appears that all of the problems turn out to be issues with 1) calling new and 2) C-style casts.
Exploiting the issue requires someone with a detailed knowledge of C++ inner workings. It would have taken me a long time to figure it all out.
Avoiding the issue? Well, most modern C++ doesn't look very much like the problem code for very good reasons.
defunkt · 2009-10-06
It's not just the GIL. Check out Joe Damato and Aman Gupta's awesome presentation from this year's Hoedown for more info on concurrency in Ruby:
http://timetobleed.com/ruby-hoedown-slides/
sant0sk1 · 2009-08-31
I don't know why people advise others to splat their compiled 3rd party software all over /usr/local when /opt is there specifically for that purpose.
Also, enabling pthread on 1.8 has some significant performance problems unless you're using REE. For more reading on that:
http://timetobleed.com/fix-a-bug-in-rubys-configurein-and-get-a-30-per…