How do you end crunch? Teams always work at a more relaxed pace when the deadlines are years out. You can't beat Parkinson's law no matter how generous you are with the estimates.
We've all tried methodologies to counter this problem and create a continuous, sustainable pace. Unfortunately there's something deep in human nature that prevents us spreading that effort out evenly from day one.
Without the explicit recur it's far too easy to misidentify a tail call and use recursion where it's not safe.
Recur has zero inconvenience. It's four letters, it verifies that you are in a tail position, and it's portable if you take code to a new function or rename a function. What's not to love?
It's not really surprising. Hetero sexual desire has been framed negatively for well over a decade, as at best exploitative and at worst misogynistic and perverted. Men told that if you want sex you're part of society's biggest problem, and women told that if you give in to a man's sordid desires you are being taken advantage of and subjugated. All we ever talk about is the dreaded 'power imbalance'.
We've removed sex from normal life as far as possible. Films can be full of violence but any hint of titillation is verboten now. Any reference to sex in normal walks of life is seen as harassment, chauvinistic or pandering to the male gaze. Our culture is influenced by global social and religious conservatism in the quest to sell media to as many markets as possible. Our own new conservatism (the so-called left wing) is just as bad.
On top of that we have the culmination of a few decades of obsessive education about STDs and sex as a dangerous act that can ruin lives. A far cry from 'The Joy of Sex' as a cultural phenomenon.
We're letting prudes and those with deep psychological issues around sex call the shots. Millennials and Gen Z may be a lost cause, but let's hope that Gen A can rewrite the rules.
Age limits on buying cigarettes are easily thwarted by finding a corner shop that needs the sale and will sell to kids. Height restrictions on fairground rides are easily thwarted by putting bits of wood in your shoes. None of this matters.
The point is that this kind of control will drastically reduce under 18s consuming content that they shouldn't. We don't need the all of society's controls to be flawless.
10+ years ago Clojure had a fantastic introductory experience. lein new and away you go. lein was so good and effective, for both tiny hello world projects and real production apps.
The experience has gotten worse and worse now for a decade. The core team have continued to take things in a worse direction (supported by a small group of fanboys) and most newcomers are now completely baffled by the tooling.
Is there any benefit to using workspaces over just introducing some variables and having an 'environment' variable?
You can have a directory per environment and a directory of shared resources that are used by all environments.
It seems like workspaces add a new construct to be learned and another thing to add to all commands without much benefit. Could we just stick with the simple way of doing this?
This is a good example, I think, of why a future in which all homework is obsolete because of AI is actually not likely.
If a lecturer at university sets a task for 100 students (say, write an essay about the factors that led to the first world war), there will be clear and glaring similarities between the way that points are made and explained if many students use chatgpt. Yes a student might rewrite or paraphrase chatgpt, but low effort copy and paste is going to be very obvious because chatgpt's model cannot produce an entirely unique approach to the task every time it is asked.
I know there are weights and parameters that can be adjusted, so there is some variety available, but I think better to think of the LLM as an additional (all-knowing) person you can consult. If everyone consults that same person for an answer to that assignment it's trivial to detect.
My friends and I had great fun with Micro Machines 2 on the Mega drive (Genesis).
The cartridge itself was fascinating because it had two extra controller ports on it! You had for player gaming by plugging two controllers into the console and two controllers into the cartridge that was protruding from the top of the console. The cartridge was a little taller than usual to accommodate the extra hardware.
This seems pedantic, but I suppose anyone using the term 'superset' is inviting the pedantry.
For almost all intents and purposes, if you are asked to create a YAML file then you can choose JSON as your syntax instead, because your file will be understood by the YAML parser. The benefit being that JSON has far fewer quirks and edge cases.
It's comical that when people get confused with YAML (which is often) they convert their YAML snippet to JSON to see what's really going on. YAML is horrible for humans to write. Let's just use JSON, the sane syntax, instead. A few extra parents and quotes is really no big deal, and it's far easier to read unambiguously.
I guess at least their work has confirmed what we probably already knew intuitively: if you have CPU-intensive tasks, without waiting on anything, and you want to execute these concurrently, use traditional threads.
The advice "don't use virtual threads for that, it will be inefficient" really does need some evidence.
Mildly infuriating though that people may read this and think that somehow the JVM has problems in its virtual thread implementation. I admit their 'Unexpected findings' section is very useful work, but the moral of this story is: don't use virtual threads for this that they were not intended for. Use them when you want a very large number of processes executing concurrently, those processes have idle stages, and you want a simpler model to program with than other kinds of async.
We've all tried methodologies to counter this problem and create a continuous, sustainable pace. Unfortunately there's something deep in human nature that prevents us spreading that effort out evenly from day one.