It seems like it would be a lot easier to just have students call, e.g., `ta_fork()` rather than `fork()`, and then provide an implementing file to be linked with their program. Then `ta_fork()` allows the TA to trigger errors, either probabilistically or deterministically (say, by setting environment variables).
This approach would also give students insight into testing strategies like mocking, plus it would work on more operating systems.
[Edit: Not to disparage this project. It seems like it would have lots of uses, and it was probably a lot of fun to develop.]
When I was a kid, maybe 5th or 6th grade, my family was driving out in the country and came upon a burning farmer's field.
We stopped to help, and my older brother and I were charged with keeping an eye on the smoking remains of a field that had already burned out. The adults, and my younger siblings, went to fight the actual fire.
By the time it was all over, my brother and I were both feeling slighted and sidelined. But as we got back to the car, my mother, may she rest in peace, told us how much responsibility we had been given, to be set such an important job, with no adult supervision, the farmer must have thought we were older than we really are.
Two points, I suppose. First, one doesn't always appreciate one's salient qualities. Second, 45+ years later, that episode still stands out in my memory for how rewarding it felt.
This brings to light the importance of managements messaging to the "legacy" and "Greenfield" teams.
Frequently the Greenfield project is purely political, or just a punt.. and has a 50-50 chance of successfully launching in a way that ever replaces legacy.
People lose sight of the fact that until the Greenfield thing launches, 100% of the revenue keeping the lights on comes from the legacy system. Keeping legacy alive and thriving is critically important both to the firm and also to give the Greenfield team runway to build the new solution. Even beyond the launch date, a sliding % of the revenue will continue to go through legacy, often the majority, and often for years.
The reality is you could fire the entire Greenfield team and continue as a going concern for 5 years. If your legacy system fails, your firm might miss payroll within a few months.
Most often I find management slaps unrealistic optimistic timelines on the Greenfield project, and continues to stick with them as the new thing fails to deliver. This both stresses out the Greenfield team to build a more corner cut solution.. while also causing mass attrition on the legacy team out of job risk concerns.
Alex Jones reminds me of the Introduction to Kurt Vonnegut's "Mother Night" -- We are what we pretend to be, so we must be careful about what we pretend to be.
Before HTTPS was all but required for everything, an intranet site would get blocked in one particular office at 11pm every night. We tracked it down to a night-shift employee signing in, whose last name contained "shit". After pleading fruitlessly against that office's IT policies we solved the problem permanently by eating the overhead and turning on HTTPS.
I once debugged an email delivery issue which turned out to be a similar filter which included email headers while scanning, ending up blocking any email that passed through an SMTP server called foo.sussex.bar.hp.com (or maybe it was Essex, my memory is hazy).
The later (TV-Show) is actually based on the former (twitter feed) but couldn't retain the name in the US. It would probably have been perfectly fine as is in the UK.
I never understand that kind of (often self) censorship where the meaning is intentionally left clear. It could be malicious compliance with keyword-based filters but people do it voluntarily even in places where no such filters exist.
I make a point to mention that my cat’s full name is Robert. I enjoy the reactions: person either looks at me like I’m a moron for thinking this is something worth spending the energy to say out loud, or they really enjoy it. I digress.
It likely originated in rhyming slang where words that rhyme are used as replacement[0]. It isn't the only example in nick names. Bill is a nickname for William and Bob is a nickname for Robert.
The nickname for John is Jack, actually. Jack and Dick both belong to a class of nicknames that all end in "ck" or "k" sounds, but for which the original doesn't have a k sound.
The standard of counting as "Tiffany" is strange. He's not happy with Θεοφανώ or Theophania, but he's perfectly happy to count (French) Tiphaine, Thifaine, Thiephaine, and (English) Tephany as being "obviously" the modern name. But the difference between Tephany and Theophania is down to the "Th" at the beginning. Why agonize over the difference between the very well-attested Greek Theophania and modern Tiffany if it's so clear that medieval Tephany matches the modern form? It's a better match for the Greek form!
You don't put science on your name if you're a real science
Having flashbacks to when a close friend was getting an MS in Political Science, and spent the first semester in a class devoted to whether or not political science is a science.
Another example of selling the same space twice is cities moving from fixed parking meters, to meters that print out a parking receipt.
With the meter stuck on a pole at the parking space, if I pay for an hour but leave after 20 minutes, the meter still shows time. Somebody else can come and park there for 40 minutes, free.
But if I buy a paper receipt and stick on my dashboard, and leave after 20 minutes, the next person still has to rent the same 40 minutes of time.
Nobody I mention this to is upset about it (neither am I, at heart, though I do notice it). That suggests to me that conflicts over tray space on airplanes is driven more by a sense of claustrophobia and powerlessness, than by any particular notion of fairness or ownership.
In Australia, parking at popular beaches is both packed and crazy expensive, with day passes pushing $50, so there's a well-established tradition of giving your parking ticket to the guy waiting to swipe your spot as you pull out.
Of course, the councils running the parking didn't want to lose out, so they've "upgraded" to parking meters that require you to punch in your license plate number, which is then printed on the ticket in large letters to make sure it can't be reused.
I understand your cynicism, but most systems like this have a reasonable maximum timeout (usually the maximum time you're allowed to stay in that zone - 2-3 hours) at which point it'll end the session.
While that's far from ideal for a 5 minute stop, it's not the only way to pay (you can also try and guess how long you'll be in the spot and prepay much like meters but to the minute rather than some multiple of the change in your pocket) - and at some point you need to take ownership of your oversight, no?
I’ve parked in places where I’m pretty sure the only option was to start a timer (it’s why I made the comment).
EDIT: yup, RingGo in a city centre in England. Just checked. Only option is to start a timer. And it stops in 5 hours time if not stopped (£5.60 for the first 2 hours then a fixed £3.80 for the time until 10pm)
When the old systems worked just fine, and there is no option to prepay, no, I will not take ownership of my “oversight” - it’s dark patterns designed to prey.
It’s more inconvenient for me yet they charge me a convenience fee (especially if you drive a lot of rentals, registering each car is a PITA).
Oh wow, I literally have a blog post queued up about how different kinds of "documentation" can be split into similar categories. Great to see that someone else has had a similar insight!
My categories are Source (Reference), Procedures (~Tutorials), Examples (How-tos) and Meta (Tribal Knowledge, history, etc).
In the context of software teams (and others I'm sure) my anecdotal insight is that without a balance of these kinds of information, certain team functions break down:
- No Source/Reference, no shared deep understanding
- No Procedures, difficulty scaling processes (and difficulty onboarding new team members)
- No examples, harder to develop new skills / level up existing skills
- No meta, no context or "why", leading to less motivation
This approach would also give students insight into testing strategies like mocking, plus it would work on more operating systems.
[Edit: Not to disparage this project. It seems like it would have lots of uses, and it was probably a lot of fun to develop.]