2,243 karma · joined March 26, 2012
Previously, Parse Push tech lead and general DevOps person.
Due to the need of bodies in requests, everyone uses POST and streaming results often use the text/event-stream protocol for responses. But this is technically a bad fit because no state is actually changing and because EventSource can only use GET for some obstinate reason. So many APIs reimplement the functionality with their own parser
I hung out with a large group of people for nearly a decade and couldn’t remember who was who until the pandemic. The names under zoom helped me gradually learn over weeks.
When I teach scuba I recite the list of student names for my class in as random an order as possible while I drive to the shop to lower my cognitive load to put faces to names. When I do roll call, I write down every person’s name and try to gradually move off the cheat sheet as I call on them to answer questions. But once they put on their gear (especially since I teach where they use hoods) it all goes downhill. Two white guys approximately 35yo? I’ll get them confused.
If this were socially appropriate I’d totally use it as my prescription glasses to help continue smoothing the curve.
My favorite was “it’s impossible to know which DB is failing from a stack trace”. I created STAIN (stack traces and instance names): a ruby library that would wrap an object in a viral proxy (all returns from all methods are themselves proxies) that would intercept all exceptions and annotate the call stack with the “stain”ed tag.
An LLM will run the probabilistically likely command each time. This is like using Excel’s ridiculous feature to have a cell be populated by copilot rather than having the AI generate a deterministic formula.
Previously you could define a function that accepted never and throws. It tells the compiler that you expect the code path to be exhaustive and fixes any return value expected errors. If the type is changed so that it’s no longer exhaustive it will fail to compile and (still better than satisfies) if an invalid value is passed at runtime it will throw.
At Google we noticed the main cause of outages are config changes. Does that mean external config is dangerous? Of course not! But it does remind you to be vigilant