Richard Schneeman
schneems.com · Personal blog · on HN since 2011
Richard Schneeman, a Ruby and Rails engineer formerly at Heroku, writes about Puma, Rails internals, performance and developer life.
What HN saysCommenters cite his posts on Rails, tutorials and an online master's program, though one says his recent headlines have become clickbaity.
80HN people shared it
16linked it in comments
124stories submitted
915story points
8 months agolast shared
2011people per year2026
Most-shared posts
- 1The room where it happens: How Rails gets made5 people · 28 points · first shared 2021 · 1 comments on HN
- 2Puma 4: New I/O 4 Your Server5 people · 11 points · first shared 2019 · discussion on HN
- 3How I Reduced My DB Server Load by 80%4 people · 209 points · first shared 2017 · 110 comments on HN
- 4My Red Hot ADHD Programming 'Affliction'4 people · 21 points · first shared 2024 · 2 comments on HN
- 5I know how to code, I can code in anything4 people · 17 points · first shared 2017 · 1 comments on HN
- 6A free 10 week rails course4 people · 9 points · first shared 2012 · discussion on HN
- 7Using GIFs in your GitHub Pull Requests (for Good, not Evil)4 people · 6 points · first shared 2013 · discussion on HN
- 8Sharp Tools4 people · 5 points · first shared 2016 · discussion on HN
- 9Saving Sprockets4 people · 4 points · first shared 2016 · discussion on HN
- 10Rubyist makes some Python code 5x Faster3 people · 25 points · first shared 2017 · 10 comments on HN
- 11Don't McBlock Me3 people · 8 points · first shared 2025 · 5 comments on HN
- 12WTF is a Thread3 people · 7 points · first shared 2017 · 1 comments on HN
- 13Disallow code usage with a custom `clippy.toml`3 people · 6 points · first shared 2025 · discussion on HN
- 14OMG OMSCS: Is an Online Masters Right for You?3 people · 2 points · first shared 2017 · discussion on HN
- 15The Oldest Bug in Ruby – Why Rack::Timeout Might Hose Your Server3 people · 1 points · first shared 2017 · discussion on HN
What HN people wrote when they linked it
schneems · 2024-12-22
Thanks for the fast reply! For some background:
Rundoc is a tool for writing tutorials such that the author is guaranteed the outcome is valid (if a command fails, the tutorial fails) and for helping users see the exact output they would expect (instead of a static output). The tool has website integration that allows you to take screenshots and navigate a webpage.
Recently I wrote this tutorial https://schneems.com/2023/06/14/its-dangerous-to-go-alone-pub-mod-use-… which makes heavy use of vscode extension shortcuts and hover over tips. I would love to be able to keep that tutorial up to date by scripting the tooltips to make sure the options don’t change and the suggested commands like CMD+. Continue to work.
mijoharas · 2024-06-03
The other answer is correct I believe, but I think the most common recommendation I've seen for rails boils down to "Use Timeout, and then kill and restart the process" (ref: [0], [1]), which obviously doesn't feel great for performance when a timeout in one thread can cause all other threads to need to be killed.
[0] https://www.schneems.com/2017/02/21/the-oldest-bug-in-ruby-why-racktim…
[1] https://github.com/zombocom/rack-timeout (c.f. term_on_timeout)
speps · 2017-11-03
https://www.schneems.com/
Recently his headlines have become very clickbaity... if that's any inspiration, particularly the Python one...
CoachRufus87 · 2017-08-15
Richard Schneeman (an engineer at Heroku) wrote a great blog post on this very topic; worth the read: https://schneems.com/2017/07/26/omscs-omg-is-an-online-masters-right-f…
fokinsean · 2017-08-15
I've been entertaining the idea of going through this course as well. I graduated 2 years ago, BS in CS, and part of me misses being in school. Plus my employer has a decent tuition reimbursement program.
Would anyone who works full time and gone through this program care to share their thoughts?
Edit: Just found this great article from another comment
https://schneems.com/2017/07/26/omscs-omg-is-an-online-masters-right-f…
Manishearth · 2017-07-17
Reminds me of this excellent blog post about sharp tools
https://schneems.com/2016/08/16/sharp-tools.html
alipitch · 2022-04-09
Slightly off-topic digression:
Would WAS compilation help solve the ruby / rails timeout problem?
https://devcenter.heroku.com/articles/h12-request-timeout-in-ruby-mri
> H12 - Request Timeout in Ruby (MRI)
> Rack-timeout limitations
> Due to the design of the Ruby programming language’s Thread#raise API, which timing out code depends on, there is a known bug with rack-timeout that can put your app into a bad state if rack-timeout fires too frequently.
(Other related URLs)
https://github.com/ankane/the-ultimate-guide-to-ruby-timeouts
https://headius.blogspot.com/2008/02/rubys-threadraise-threadkill-time…
https://www.schneems.com/2017/02/21/the-oldest-bug-in-ruby-why-racktim…
thibaut_barrere · 2017-11-26
(note: I use both Elixir & Ruby, for different reasons)
You can most of the time rely on object.method(:blank?).source_location to quickly determine where a specific method is defined.
More useful debugging tips can be found here:
https://www.schneems.com/2016/01/25/ruby-debugging-magic-cheat-sheet.h…
steveklabnik · 2016-12-02
Here's a fun blog post about this particular analogy: https://www.schneems.com/2016/08/16/sharp-tools.html
drewda · 2016-06-17
Re Sprockets, I found this recent talk at RailsConf about the history, problems, and future of Sprockets maintenance and development to be an interesting read: http://schneems.com/2016/05/31/saving-sprockets.html
stephenitis · 2014-01-27
@Schneems has a really good tutorial on this using ffmpeg.
http://www.schneems.com/post/41104255619/use-gifs-in-your-pull-request…
petercooper · 2013-12-02
It exists, though does rely on the central service: http://schneems.com/post/61514247453/explain-shell-from-your-shell
craigkerstiens · 2012-06-14
For those interested there's also a Rails equivalent post at - http://schneems.com/post/19298469372/you-got-nosql-in-my-postgres-usin…
danskil · 2012-06-08
I was just doing a write up on swapping auth back ends to gain more security http://schneems.com/post/24678036532/zomg-my-passwords-are-insecure-no…
thinkbohemian · 2014-11-14
> 2.0.0 means no memory errors
2.1 has a totally new GC setup (generational GC). It is guaranteed to use more memory (expect 3~5%), but be MUCH MUCH MUCH faster. Typically you can trade off running one less Puma worker to decrease memory usage, and the increase in speed may make up for it. Alternatively you can bump up to 2x dynos, and cut the number of dynos you have in half. If you haven't tried 2.1.3 or above do yourself a favor and revisit. The 2.1.3 patch means memory grows much more slowly.
Also if you didn't see my post on memory profiling: http://www.schneems.com/2014/11/07/i-ram-what-i-ram.html (It got over 40 upvotes on reddit, and like 3 on HN, again...HN what is going on? I've had much less substantial posts make it front page). That post shows you how to remove ~30% starting RAM (by bumping mail version to 2.6.3+) and shows you can profile and remove libraries that are using a ton of memory in your app.
You can also use something like puma_worker_killer (or unicorn_worker_killer) to tame your memory growth if it only balloons over 512mb after a while, but ultimately those two solutions are bandaids.
Ruby 2.0 isn't going to be supported forever and the generational GC is definitely here to stay. Maybe try the 2.2.0 preview (it's on Heroku), it has 3 generations (total) which means much less retained memory and you still get speed performance improvements.
I see most of the bigger production apps using 2.1+ fwiw.
benigeri · 2012-09-16