Man that cracks me up.
1. Crowdsourced word weighting: your keyboard's stochastic predictions are no longer mostly based on your typing, but rather on what 'everyone' is typing as their next word. This makes the word replacements it does often suboptimal to downright nonsensical.
2. Aggressive lookbehind correction: these days you have to be seriously on your guard for your keyboard to not sneak-edit something you typed 5 words back, because autocorrect suddenly decided that the probability is high you meant to say something else there (which it clearly isn't, as your eyes and brain exist)
The problem your encountering is downstream from point 1. Basically your keyboard thinks due to the way most people construct a particular sentence, you're gonna want to type "bold" next, despite "hold" clearly clearly making more sense. So it'll force "b" on you 4 times in a row until it realizes you really want to type "h".
Going back to the old style of doing keyboards (mostly user-learned dictionaries and probability weighting, and little lookbehind autocorrrect) could be done, but within Google and Apple there are probably people who got promoted by switching to the current shitty system. They'll block off any attempt at someone messing with their pride.
(There is a third 'problem' where your visual keys do not correspond to the touchmap at all. Swiftkey has a feature where it can show you what your touchmap and heatmap look like versus the actual layout and it its often staggeringly different, with many keys vastly tilted. When you try to desperately type "h" after 4 misses, you're doing that with your index finger in "hunt and peck" mode, which does correspond to the visual layout but not with your usual typing on the touchmap layout. There is no way for your keyboard to know you're in "hunt and peck" accuracy mode.)
What does idempotent mean in this context, or did you mean atomic/rollback on error?
I'm confused because how could a database write be idempotent in Django? Maybe if it introduced a version on each entity and used that for crdt on writes? But that'd be a significant performance impact, as it couldn't just be a single write anymore, instead they'd have to do it via multiple round trips
Also, consider that good work - particularly in art but also in engineering - requires constraints. Knowing what you cannot do adds guard rails and a base set of axioms around which you can build. Perhaps the power of LISP macros and AST manipulation is not “powerful and thus good”, but rather “too powerful and thus complicated”. Needing to write out a boring old function/class/module instead might leave you with code that is simpler to read and design around.