chriscbr

Joined 3 years ago

Karma
234
Submissions
59
Member since
Dec 19
Twitter: @rybickic
View on Hacker News

Recent submissions

Comment · 4 months ago
Comment · 5 months ago
nit: On my first read, I was a bit confused trying to solve the puzzle (without TLA+) because the second question was underspecified:

> If the algorithm terminates with b = 1, what must have been true at the start?

For anyone that wasn't clear, "b" isn't the number of beans in general, it's specifically the the number of black beans. Introducing a variable before defining what it is can be a bit confusing, hope this comment helps others.

Comment · 7 months ago
Maybe "Rust maintainers' perspectives on AI" or "Rust contributors' perspectives on AI" would be better?
Comment · 8 months ago
Comment · 8 months ago
Does Facebook/Meta still use Phabricator or Phorge directly? Or do they use a fork of one of them internally?
Comment · 9 months ago
Comment · 1 year ago
On my current team we run a centralized task scheduler used by other products in our company that manages on the order of around ~30M schedules. To that end, it's a home-grown distributed system that's built on top of Postgres and Cassandra with a whole control plane and data plane. It's been pretty fun to work on.

There are two main differences between our system and the one in the post:

- In our scheduler, the actual cron (aka recurrence rule) is stored along with the task information. That is, you specify a period (like "every 5 minutes" or "every second Tuesday at 2am") and the task will run according that schedule. We try to support most of the RRule specification. [1] If you want a task to just run one time in the future, you can totally do that too, but that's not our most common use case internally.

- Our scheduler doesn't perform a wide variety of tasks. To maximize flexibility and system throughput, it does just one thing: when a schedule is "due", it puts a message onto a queue. (Internally we have two queueing systems it interops with -- an older one built on top of Redis, and a newer one built on PG + S3). Other team consume from those queues and do real work (sending emails, generating reports, etc). The queueing systems offer a number of delivery options (delayed messages, TTLs, retries, dead-letter queues) so the scheduling system doesn't have to handle it.

Ironically, because supporting a high throughput of scheduled jobs has been our biggest priority, visibility into individual task executions is a bit limited in our system today. For example, our API doesn't expose data about when a schedule last ran, but it's something on our longer term roadmap.

[1] https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-...

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton