angelbob

Joined 17 years ago

Karma
2,199
Submissions
686
Member since
Sep 29
I'm a long-time programmer. These days it's mostly in Ruby.

I wrote Rebuilding Rails, which I think is pretty good: http://rebuilding-rails.com

Some stuff I've done: https://codefol.io https://github.com/noahgibbs https://codefol.io/portfolio

I'm not hard to Google for, if you want to.

View on Hacker News

Recent submissions

Comment · 3 years ago
And even if you think "not the fediverse," Twitter is still dead. Let's get to "long live" something.
Comment · 4 years ago
What do our oldest still-living langs have in common? What would it take for a programming language to make it to 100 years?
Comment · 5 years ago
Disclaimer: I'm on the YJIT team.

In general it's not a big change. You should only turn on YJIT for long-running jobs -- the prod Rails server, plus probably background workers if you have them. YJIT does nothing unless you turn it on with the --yjit flag.

YJIT's going to affect memory usage, so it'll change your optimal number of processes and threads for your Rails server - play with it for your app specifically, because the percent speedup and mem expansion vary a lot from app to app. YJIT works fine with Puma and Webrick. I don't think anybody's tried it seriously with less-common servers like Falcon or Thin, but I'd expect it to work -- file a bug if it doesn't, because it should.

YJIT does speed up Rails - we're seeing about a 20%-25% speedup on little "hello, world" Rails apps (see: https://speed.yjit.org/), and about 11% on Discourse for a single thread. We don't have good multithreaded or multiprocess numbers yet, but it's in the works. YJIT scales with multiple threads/processes just like existing CRuby.

(All speed numbers are accurate as of right now, but may change over time.)

I would probably not use it in dev mode. While YJIT has pretty good warmup numbers, Rails throws away all existing application code for every request in dev mode. That's going to make YJIT a lot less useful. Play with it -- maybe I'm wrong for your app, especially if you use a lot of non-reloaded code (e.g. methods inside gems.) But I wouldn't expect great results in the development RAILS_ENV.

For deployment the short version is: add --yjit as a command line parameter in production mode and (probably) for your background workers. You can do this with "export RUBYOPT='--yjit'" or use your local preferred way.

Where I give weaselly-sounding qualifiers like "probably," that's because it can depend on your config. If you have plenty of memory but are often CPU-bound, YJIT is usually good. If you have really limited memory and your server CPUs are mostly idle, YJIT is usually bad. YJIT is also currently x86-only and runs on Mac and Linux but not Windows.

There has been a lot of historical demand for a Ruby config for servers: something that uses more memory to get faster operations, and that is optimised for long-running processes. YJIT is aimed directly at that. Non-JITted CRuby is mostly the opposite: fast startup, modest memory requirements, doesn't get significantly faster over time.

Comment · 7 years ago
At least as of Ruby 2.6 I tried that and it really didn't work: http://engineering.appfolio.com/appfolio-engineering/2018/4/...

It may work a bit better now, but it's still very much not tuned for that. The result would probably still be slower than not JITting, for the same reasons mentioned for 2.6 in that link.

Comment · 7 years ago
Earlier 2.6 versions of Ruby used 5 as the threshold. For a variety of reasons, that was way too low.
Comment · 7 years ago
Nope, that's not what Bootsnap does. Bootsnap caches the pre-parsed .rb files as ISEQs (bytecode buffers.) It's conceptually a bit similar but not the same.
Comment · 9 years ago
Weekly one-on-ones are pretty common in companies I've been part of, and GitHub has a lot of remote workers. Weekly one-on-ones seem more likely than not, in general.
Comment · 9 years ago
This is very cynical, but not basically wrong.
Comment · 9 years ago
Consider just-you personal retrospectives. Do them at the end of sprints or projects, and consider a weekly one. I do this both professionally and for personal stuff.
Comment · 9 years ago
Where are you at geographically? I've never had good luck with the local recruiters in Silicon Valley, but maybe they're better in places with less info about market rates?
Comment · 9 years ago
That's a very solid list of submissions. Every fourth-or-so submission has hundreds or thousands of points. If you feel that's not great... Dunno. You're using a different yardstick than I am. That looks a lot like people consider his name to add credibility.
Comment · 9 years ago
I got a raise of around $30,000 as a result (ish, hard to measure) of writing my technical book. I'm also sufficiently well-known that I'm unlikely to ever have trouble getting a Ruby job. That's hard to quantify exactly, but I think it's fair to say it's worth $5,000-$10,000 annually, as a rough equivalent.

(My book sells for around $30-$40 rather than $15, but the math is similar.)

Comment · 9 years ago
At his price point, he'll probably get a continual trickle of customers. I sell a book called "Rebuilding Rails" -- not as successful as his, but I've also made a few tens of thousands of dollars, so not nothing. And I reliably make a few more thousands of dollars yearly, years after I wrote it.

After Ruby is a "hot" language (years ago), it becomes a legacy language where companies will pay money for assistance with their products. In the $10-$15 niche, you need individual engineers to think a language is neat. In the $40-$10,000 niches, you need companies to think they can save some engineering time.

Both can be very valuable.

Comment · 9 years ago
I got a 1099-K from Gumroad this year, as did my wife. I think they're changing that.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton