However, in your example it’s the kernel that is deciding the request (message) is bad. In Hubris it is the message receiver.
This is a bit contrived, but imagine you’re receiving some stringly typed data from an external source and sending a message to a parsing task that either throws or messages you back with a list of some type t. Maybe it is returning ints and you as the client know that if something isn’t parsable as an int you want it to treat it as a ‘0’ because you’re summing the list. Somewhere else you want to call the same task, but you want strings that can’t be parsed to be treated as ‘1’ unless they can’t be parsed due to overflow (in which case you rethrow) because you’re taking the product.
In some situations it’s natural for the client to know more than the server about how to handle errors. With this nuke from orbit model, there’s some forced coupling between the client and server (mutual agreement over what causes a REPLY_FAULT).
It’s interesting how in a system where one team writes all the code, nuking your clients from orbit when they look at you funny can improve iteration speed.
It’s funny to wake up and read this after falling asleep reading about algebraic effects.
If you squint the right way, this is a kernel that lets a server perform an effect that the client cannot handle.
I feel like this would make code reuse and composition much harder, but provides a much simpler execution model. Definitely the right trade off in a static embedded system. You can always just vendor and modify a task if you need to reuse it.
It’s a 2000 line rust embedded systems kernel that doesn’t support adding new tasks at runtime. It is written to go deep in the guts of the 0xide server racks.
I know of multiple teams where 50% of the team were nominally HQ2/Virginia employees and 50% were distributed around the country last spring.
Folks on these teams speculated that the Return To Hub push was specifically thought of to meet HQ2 incentives.
None of the distributed employees ended up in Virginia. They all found local teams internally or left Amazon. When high performer leaves a team it’s common for others to leave since it breaks the ice. Lots of these teams then lost local talent to companies with less strict in-office requirements.
Markets are gonna communicate information whether you like it or not.
Every analyst I respect has the same take. This guy even glosses over that it wasn’t a general on a tarmac this time, but a general in a consulate that was extrajudicially murdered. Iran had to respond in a show of force to reestablish deterrence, without escalating the conflict, drawing the US in.
Two kids are on the playground, one has a big brother. They’re both constantly bothering each other. The kid without the big brother has to ride a thin line to not look like he’s trying to kill the other kid (causing the big brother to run over) while still bruising him back enough that the other kid leaves him alone until next week.
Every time I’ve checked over the last decade (including today), you can buy a mac mini that supports the latest macOS for under $250 on ebay. You can also test your app using github actions for free if your use case fits in the free tier.
There is no way to do this for an IBM z16, which is the kind of vendor lock in that people are saying Apple doesn’t have.
Which is why the US is will leave Taiwan hanging. Taiwan sees what happened to Ukraine, the writing is on the wall. Hong Kong style gradual reunification will happen in the next 10 years.
Lots of people make this mistake many times before learning this. I enjoyed this perspective.
This is covered as Tracer Bullets in the book The Pragmatic Programmer. If anyone hasn’t read that book, I strongly recommend it. Should take an afternoon or two and covers the top 100 most popular blog post concepts that make it on HN.
A LUT version of you is inductive. Every observed input/output pair does not uniquely identify your current state. Much like a puddle left by a melted ice cube indicates its volume, but little to nothing of its shape.
Post LUT-you genesis, applying property based fuzz testing would quickly reveal that the LUT-you is one of an infinite number of LUT-yous that melts into the puddle of historical data, but not the LUT-you that is the original ice cube.
I think it’s safe to call this a fact in markets like the Bay Area.
In college three friends and I rented a 1000sqft 2 bed 2 bath apartment with one parking spot for $X, then the next year a 2000sqft 4 bed 4 bath 2 car garage for $1.15X. Per zillow, the owner was renting it to us for 0.3% of the purchase price. The only way for them not to be losing their shirt is crazy appreciation.
However, in your example it’s the kernel that is deciding the request (message) is bad. In Hubris it is the message receiver.
This is a bit contrived, but imagine you’re receiving some stringly typed data from an external source and sending a message to a parsing task that either throws or messages you back with a list of some type t. Maybe it is returning ints and you as the client know that if something isn’t parsable as an int you want it to treat it as a ‘0’ because you’re summing the list. Somewhere else you want to call the same task, but you want strings that can’t be parsed to be treated as ‘1’ unless they can’t be parsed due to overflow (in which case you rethrow) because you’re taking the product.
In some situations it’s natural for the client to know more than the server about how to handle errors. With this nuke from orbit model, there’s some forced coupling between the client and server (mutual agreement over what causes a REPLY_FAULT).