Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Aaron Patterson

    tenderlovemaking.com · Personal blog · on HN since 2008

    Aaron Patterson, a Ruby and Rails core contributor, writes about Ruby performance, Rails internals, debugging, and side projects.

    Visit blogRSSHN submissions
    ProgrammingLanguages & CompilersSystems & Performance
    What HN says

    Commenters describe him as an influential Ruby community figure and a fantastic writer with a quirky, sincere style.

    Stats for nerds
    78HN people shared it
    72linked in comments
    2.7Kstory points
    Jan 2026last shared
    2009people per year2026

    Top posts on HN

    1. 1
      Apple Photos app corrupts images
      1 person · 1.2K points · first shared 2025 · 439 comments on HN
    2. 2
      Reducing Memory Usage in Ruby
      1 person · 222 points · first shared 2018 · 56 comments on HN
    3. 3
      Speeding Up Ruby with Shared Strings
      1 person · 194 points · first shared 2018 · 37 comments on HN
    4. 4
      I am a puts debuggerer
      9 people · 165 points · first shared 2016 · 59 comments on HN
    5. 5
      Making ActiveRecord 2x faster
      3 people · 159 points · first shared 2014 · 44 comments on HN
    6. 6
      Live Streaming in Rails 4.0
      3 people · 141 points · first shared 2012 · 38 comments on HN
    7. 7
      Visualizing Your Ruby Heap
      2 people · 135 points · first shared 2017 · 23 comments on HN
    8. 8
      Eliminating Intermediate Array Allocations
      1 person · 70 points · first shared 2024 · 3 comments on HN
    9. 9
      Fast Tokenizers with StringScanner (2023)
      5 people · 56 points · first shared 2023 · 8 comments on HN
    10. 10
      I suck at web design, so I made a contest to design rubycommitters.org.
      1 person · 55 points · first shared 2011 · 40 comments on HN

    What HN people wrote when they linked it

    • bradleylandMar 2015

      This is a nitpick, but this isn't entirely accurate:

      "This is a function of how Rails does concurrency, which is by using multiple processes."

      Multi-process vs multi-threaded is an application server architecture matter, not a Rails matter. Yes, your application must be thread safe, but this has been available in some form for Rails apps since a long time now [1]. The biggest problem in recent history has been Gems and their thread-safetyness (is that a word). The number of threaded Ruby application servers has been on the rise for a long while now, and even Passenger (traditionally the multi-process front-runner) is going threaded in version 4.0.

      1: An interesting blurg post related to Config.threadsafe! (which was a huge source of confusion): http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html

    • vidarhSep 2023

      I think a parser is perhaps the example of very resorting to a compiled extension can be beaten by something more JIT-favourable, in a language like Ruby it tends to be heavily dominated by scanning text, and creation of objects, and 1) you can often speed it up drastically by reducing object creation. E.g. here is Aaron writing about speeding up the GraphQL parser partly by doing that, 2) creating Ruby objects and building up complex structures in the C extension is going to be almost exactly as slow in the C extension as in the Ruby, 3) the scanning of the text mostly hits the regexp engine which is already written in C.

      [1] https://tenderlovemaking.com/2023/09/02/fast-tokenizers-with-stringscanner.html

    • steveklabnikJun 2014

      > I don't know about the security vulnerabilities,

      About 14 months ago, it caused some of the most serious vulnerabilities in the Ruby on Rails world ever: http://tenderlovemaking.com/2013/02/06/yaml-f7u12.html

      > why not just use JSON?

      JSON is not really human-editable. Those quotes and commas, ugh! Also, JSON lacks comments.

      The vulnerabilities in YAML (which is a superset of JSON, by the way) point at why YAML and JSON both aren't appropriate for configuration: they are _serialization_ formats. Configuration isn't what they're built for.

      And you're right, it's really just not a huge deal in any way. Especially once we have `cargo project` to autogenerate the basics.

    • mattjaynesFeb 2009

      Great point. I haven't looked, but I think nokogiri fixes that bug. I think that was one tenderlove's motivations for creating nokogiri. He talks about it more on his blog:

      http://tenderlovemaking.com/2008/10/30/nokogiri-is-released/

      "I just want to tell you that you shouldn't worry about that old legacy code that uses Hpricot. Nokogiri can be used as a drop in replacement! Really! Nokogiri doesn't reproduce the bugs that are in Hpricot, but should work in most cases. Just use "Nokogir::Hpricot()" to parse your HTML. Of course, I've tried to keep the syntax of Hpricot that I like."

    • 1qaz2wsx3edcFeb 2014

      1. Rails + SSE (server sent events) - http://tenderlovemaking.com/2012/07/30/is-it-live.html

      2. Rails + Pusher

      Those are the best solutions, at hand that would work well with Rails.

      I wouldn't advise smashing a Rails app and a Meteor app together unless you have a solid case to do so (like migrating).

      Rails, aside, I'm happy to here oplog has landed. 1.0 feels imminent, the tension is growing, even here in Toronto. Stop waiting sheeple, Meteor is great as is, and it's only getting better.

    • lcnPylGDnU4H9OFJan 2023

      > I hate that I can't easy determine where a given method of an arbitrary object is defined.

      https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer.html

      The relevant bit is under the heading:

      > I’m calling a method, but I don’t know where it goes

      def index
      p method(:render).source_location
      render params[:id]
      end

      It sounds like this is the answer to your monkey-patching woes.

      my_object.method(:my_method).source_location # returns path/to/file:[line number]

    Related

    Merbistmerbist.com38 people

    Hey Apple, Please Be Nice and Share MacRuby

    Merbist
    Personal · last shared 2013
    Ruby Insiderubyinside.com147 people

    Sinatra 1.0 Released: Major Milestone for Ruby’s Best Webapp DSL

    Ruby Inside
    Publication · last shared 2021
    Sam Saffronsamsaffron.com51 people

    Stop Paying Your jQuery Tax

    Sam Saffron
    Personal · last shared 2025
    David Lattimoredavidlattimore.github.io18 people

    Wild performance tricks

    David Lattimore
    Personal · last shared 2026
    Rails at Scalerailsatscale.com59 people

    Tiny JITs for a Faster FFI

    Rails at Scale
    Company · last shared 2026
    matkladmatklad.github.io237 people

    Architecture.md

    matklad
    Personal · last shared 2026
    byrootbyroot.github.io36 people

    There isn't much point to HTTP/2 past the load balancer

    byroot
    Personal · last shared 2026
    Aaron Turonaturon.github.io49 people

    Zero-cost futures in Rust

    Aaron Turon
    Personal · last shared 2025