Their Trello Board needs an election night camp for kids/childcare service. Older kids get a fun, educational camp where they can hold a mock election and learn about voting and democracy while you go vote. As a dad, if I promise my son something I'm 1000X more likely to actually do it. As a former volunteer I've lost track of the number of doors I've knocked where parents can't go vote because they need child care.
Easiest way to tell whether it's worth it or not is to run some back of the envelope math on how much it'll cost to build and run (dev time + infra costs) vs relying on 3rd party.
5-10k seems like a low enough volume for 3rd party to be a good idea.
When you get to the high hundred thousands (let alone millions or tens of millions) it becomes prohibitively expensive to not roll in your own system.
You're missing the most important point of the entire Throttler goal: gracefully returning fast, with success or failure. Nowhere is it stated that the goal is to enqueue tasks for execution.
If you had read 'til the end you would have found multiple statements that OSAtomic* is merely an alternative. Not a silver bullet. Not the fastest.
From the conclusion:
"It's very important to understand that every example in this article could have legitimately been solved with different concurrency primitives — like semaphores and locks — without any noticeable impact to a human playing around with your app."
Also, "(...) is always going to be best executed, quickest, using GCD." is kind of a blanket statement. I'd be careful around the use of "always".
The goal of the article isn't about sheer performance — there are plenty of notes about it. If it was about pure performance, it'd be recommending moving away from objc classes and methods and using C functions or C++ classes instead, like std::atomic<>.
It's meant to be a somewhat-easy-to-digest introduction to lock-free design, where applicable.
It's not a design vs engineering boundary; it's a competence boundary. Your boundary simply encompasses more knowledge, of more areas — and thus you don't fit the archetype the article talks about.
Thanks! This gem looks interesting but doesn't apply here since with Jekyll you're basically serving static html pages (hence the need to make the A/B split with JavaScript).