Never, ever do "custom" messages. Rather, use clean messages.
Otherwise the Karens will call the manager, and get you fired, especially when a sense of humour is sorely lacking.
As the year gets into gear, so does Who, Me?, The Register's weekly reader-contributed column in which we share your stories of getting away with tech shortcuts that should really have led to long career detours. This week, meet a reader we'll Regomize* as "Chuck" who sent a story from the late 1990s, when he worked for an …
It would still have potentially led to being fired, even in the 90s. "Karens" may not have been a thing then but equally there were a lot of older people in business who would have found foul language unacceptable.
I had to warn one of my staff for distributing a humorous, but foul, email to customers. Yes it was funny but I knew of several people who would definitely not appreciated it - had they seen the message it would have seriously impacted on business relations. He only got an informal, "Never do that again!"
Yes, they were easier times. I used to work for a major US-based company that sold an early 4GL that required you to describe screen layouts in text. A colleague wrote a screen painter that would generate the right text for you. It worked so well that the UK saleforce routinely used it when demonstrating the system. On startup it displayed a nice ASCII-art logo that was an acronym: Direct Input of L*** Definitions Online, or DILDO.
No prospective customer ever found it anything other than funny.
In the 80s I worked for BAe at its Woodford plant - there we were converting Nimrods into the ill fated AEW (airborne early warning)
The main external features of this were a large bulbous nose and and elongated rear fuselage with a large radome at the rear - known colloquially as the dildo
Friday afternoons we used to have school trips taken round the factory by apprentices, one day I was working away when a group of 11 / 12 year olds were walking past accompanied by an apprentice called Martin. to my horror (and that of the teachers present) he pointed to the rear end and said this is where we mate the dildo with the hole at the back.
I asked him later if he knew what a dildo was - never seen someone go quite so red.
As I've recounted here before, I was once tracking a mainframe bug report (more than 20 years ago, yes) and got a message on my terminal stating that "if you reached this point you're fucked".
Although the original coder was no longer working with us, I eventually confirmed his prescient statement...
People not realising "anonymize" is actually a legit UK spelling I can imagine but ...
*That’s our made-up portmanteau of “The Register” and “anonymize”, not a typo as some readers have recently assumed.
Seriously? This place has really gone downhill . Must be some stiff upper manglement guy attracted by the Reg's more high brow serious journalism of recent times.
Case in point.
Its usually used with the S yes , but the Z is allowed. You cant lose marks for it. Cambridge
Now let me blow your mind , the word "speach" doesent exist, its "speech". That's right , the ugly bastardised simpleton American spelling is the correct and only one. Look it up.
Allow me to introduce you to what the French call the "frelon". While it's technically a hornet, it's bigger than anything I remember from the UK. Evil fuckers too, they'll sting you for so much as looking in their direction, then they'll whizz around the building and get you again just to be sure. This pattern might keep going but any self respecting squishy meatsack wouldn't wait for a third go.
They're noisy in flight, and tend to fly point to point, so my crowning moment of awesome was smacking one out of the air (and out of existence) with a cricket bat.
Wasps? Meh. Wasps are just angry bees. It's the hornets that like to torture for the evulz.
Nah, but I had several friends who were, and you know how at that age kids - well, speaking for myself - are a sponge for new words and idioms.
For example, I remember my brother and I going through a phase - this would be early 80s - of describing anything that was really easy as "dead pimps" (cf "dead simple" etc), a coinage that alarmed and unnerved our parents... but then, isn't that the whole point of being a kid? :)
Allow me to introduce you, if you haven't already heard of it, to Muphry's [sic] Law!
When I was at school in Aus, s and z were dictionary spellings for 'ize' words, with 'ize' the preferred spelling, because we used Oxford dictionaries. But when the Australian Macquarie Dictionary was released, it simplified spelling choice to "ise" only, and in the on-line newsgroups in the 90's, anyone using the "ize" spelling in an AUS newsgroup was called out for for using "American" spelling. (Haters got to hate).
I suggest to my former boss, for whom English was her second language (or third, or forth), when she wanted to say she would examine something methodically, she should really use 'analyse' rather than 'analise'.
You have to love English. Nothing like a bit of consistency, eh?
"We Scots use -ize"
That's (genuine) news to me, writing as a Scot. I'll admit that it has an air of plausible truthiness to it that it might perhaps have been the case at some point in the past before British English became more standardised [sic] (but back then spelling tended to be more variable, erratic, and less fixed in general), but I think I'll play the "citation needed" card nevertheless, if you would perhaps be so kind? I was certainly taught at school that "-ise" was the normal/preferred spelling.
(I had always thought that the reason for American English preferring -ize was because of that Noah chap (the one with the dictionary, not the one with the big boat) deciding that the "z" spelling much better harked back to the original Greek spelling/pronunciation of such words, rather than the "s" spelling acquired via French and Latin?)
On your latter point, I believe so aye. And if I'm not mistaken that means the 'murricans actually have the unenviable task of needing to remember which words are spelt -ize and which are spelt -ise. Which presumably isn't too bad if you're an etymology buff, but I suspect that doesn't apply to the average Joe.
It's worse than you think. The Oxford English Dictionary specifically prefers -ize (modulo some rules about the Latin origin of the word in question). Only, most British writers greatly prefer -ise.
I have a theory about that. It's crosswords that make -ise better. When that "s" is part of a crossing word, it is vastly easier to set the crossword than if it was a "z", because there are far more s's than z's in English. Since all UK newspapers print proper cryptic crosswords, they tend to prefer "ise" generally.
Yes, it's a crazy theory, but I like it.
> before British English became more standardised
All living languages are continually changing and evolving, both in speech and writing (assisted by internationalisation, impeded by grammar nazis of course). Dictionaries merely reflect and attempt to codify the current state, albeit somewhat slowly and reluctantly. So, in a sense, you're all correct...
Icon... I was taught to use -ise, and 'forbidden' from using -ize, too :)
End users are marvellous beings, they can trigger errors you would've never thought of (this veep seems to possess this skill as well).
My go-to is a boring "unexpected error, contact an administrator" on user-facing systems, but sometimes on projects when i'm sure it'll never be used in production (famous last words) i like to do a sarcastic congratulations message. "Congratulations, you managed to break the program. Contact an admin to claim your prize".
《My go-to is a boring "unexpected error, contact an administrator" on user-facing systems》
Having been one of those "administrators" I would implore any code monkey to prepend some clue as to where in his or her code the error occurred.
If its open source its still a lottery trying to determine what caused the error and with closed source the vendor (if you can get past the local "distributor") will say something like "without more information there is not much we can do." So the "If you are here, you are fucked" is probably quite accurate. I might use "Lasciate ogne speranza" just to infuriate the antielitist wokery.
Gcc, and most C compilers I imagine, provide macros for the current file, line number and function name so a fairly useful error message is possible.
Otherwise the poor sysadmin has to script the application to run under a debugger and try for a stack trace and exit error code - just knowing the cause was a SIGSEGV cf SIGILL is a win. SIGXCPU once pointed to some coding idiocy.
"Developers" don't really endear themselves to sysadmins. I would have thought the BOFH's defenestration victims should be pretty safe by now as the pile of dead developers would have reached the sixth floor.
How is it that users never believe that the intended "administrator" is the one in the big office with the nice young secretary in the outer office?
"Gcc, and most C compilers I imagine, provide macros for the current file, line number and function name so a fairly useful error message is possible."
That's all information the average user will overlook. A different but memorable message in each place might be better. "Sky-hook failure" will be more likely to be reported and be distinct from "Beware open manhole cover".
Personally, seeing an error message that says "something went wrong" just annoys me. You might as well just close the application without bothering to display it. If a developer wants to output a message then personally i'd say it ought to look like this:-
An error has occurred. If this is the first time your seeing this, please restart the program.
If the problem reoccurs, to be able to fix it we need to reproduce the problem, so please report exactly what you were doing to your IT Department or the developers when the problem occurred, along with the following error code. <one unique code for every error output>
You'll then stand at least a fighting chance of getting useful information about the problem back from the end user and their support. "Something went wrong" or "if your reading this, your fucked" as an error message is simply an incitement to violence from both the user and their supporting IT department.
Definitely infuriating.
I did mean this as a "catch-all" error message, generally not linked to user input or just something you didn't predict as a developer.
i already mentioned this in a different reply, but i actually assumed there would either be a full error or error description with log entry reference included as well. I generally use and/or support the software i write myself, so i didn't even think of not including actual error details!
This is why standard practice is also to log it to a file, wherever possible. Of course, that can inadvertently lead to running out of disk space if you program logs it to a file and then continues, whilst stuck in an infinite loop. Cleverer developers will trap for this.
Yup
I've asked users to quote the exact error message to me and they've been unable to do so - even when I can clearly read it over their shoulder on the screen - assuming they didn't immediately close it and then tell me there's no error message and it just did nothing at all
These are senior management with multiple PhDs too
Having got them to actually read the words out loud and asked them what they think it might mean (for the actually useful error messages - like email addresses must be addressed to someuser@domain.name and not left blank) - they'll throw their hands up in horror at being asked to THINK
There's old joke about "having a little dinosaur pop up waving a rainbow flag" being about the only way to get them to succinctly tell you what is happening - and it's scarily accurate
I was once disciplined for writing an email that stated that one particular user should be put in a job where she should be allowed to control nothing more complicated than an etch-a-sketch - someone forwarded her a copy of it. HR were trying very hard to conceal their laughter (She'd just cost us a week of downtime in her office, having bypassed all the antivirus software to open a spam email attachment on the basis of "it must be important" - for the THIRD time in a month.) She also complained loudly about my lecturing her as if she was five years old about the amount of time and money my staff had wasted cleaning up all the infgested machines she'd triggered (it was the third time I spoken to her and I was rather tired of it...). I was having to bite my tongue to stop saying what I really thought of her behaviour or question who she'd "done favours" for to land the job in the first place
"one particular user should be put in a job where…"
Oh dear, I think that particular user is working for us now :-( :-(
(You really do wonder sometimes how some people can keep their jobs (ordinary, late 20th century - 21st century, office jobs, where reasonable office computer skills are really pretty much an unavoidable requirement) when they seemingly have virtually no basic computer skills and not much more common sense either (and no, uhh, male-boss-pleasing 'decorative benefits' either). The fairest thing all round would either be to move them sideways into something harmless, or, if that's simply not possible, for management to basically have to show responsibility, given that the particular employee doesn't have the required skills for the job, and there will have to be a parting of the ways.)
True! Ideally you want an error reference you can check, or the full error they can copy and send you. I did leave that out as it is common knowledge to me, but i guess some developers never need to do support or troubleshooting for the software they write.
Full public facing errors can be a security issue sometimes (if someone is trying to break your system, a stack trace is extremely helpful!), so a reference ID for a log entry is usually a great option (if you've already got some kind of DB or logfile set up, at least)
decades ago PDP-11s running RSTS/E (this was at a college) had error messages stored in a disk file. One of the errors was "Program lost, sorry" and might happen if you tried to run a BASIC program without saving it first. This was generally VERY rare. As a prank "someone" (evil grin) changed 'sorry' to something in all caps with a colorful metaphor. WEEKS went by, and then the system operator asked ME to help him fix it. I wonder how he might have known that I could... (and I did, naturally - "Heh. That's pretty funny. Oh, you need help fixing it... You know the error messages are stored in this one file, right?")
This is why it's good practice in conditionals checking to always check cases that actually should never be possible, as enforced by the data-type in question itself. What should be a boolean could end up neither true nor false. A switch statement with cases for every possible type of an enum should always have a "default:" case at the end for if the enum isn't ANY of the defined values. Even properly compiled Safe Rust can shit out Undefined Behavior from a cosmic ray (see: the "impossible" Super Mario 64 speedrun where a cosmic ray bitflip teleported Mario to the top of the level).
"If you build an idiot-proof something, they'll build a better idiot."
I've never understood why people use that line in code.
All errors are unexpected. If it was expected it would not be an error, it would be a known and planned for condition.
The fact your code has popped up that message tells me that you were expecting something unexpected.
And if it was really unexpected, at least tell me what it is/was, so I can do something about it.
My old work had a manager who a probably racist habit of only hiring Indian people and as such there were many more Indians than you'd expect. Consequently there were lots of Hindi swearwords flying about and the other staff members learnt some new words and joined in the fun... This meant that everyone could swear and not say naughty words in English. This was fine until there was a guy of Indian descent visit the office and was most disturbed by the white guys swearing profusely in Hindi...
“Holly, as the Esperantinos say, ’Bonvolu alsendi la pordiston, lausajne estas rano in mea bideo’… and I think we all know what that means!”
“Yeah. It means, ‘please would you send for the hall porter, there appears to be a frog in my bidet’.”
“Oh. Well, what’s the one that means ‘your mother spent all her time up against walls with sailors’?”
“I’m not going to tell you, Arnold.’
"And he made sure the test tool included an especially foul message for an error considered impossible to trigger."
"Impossible" to trigger? Yeah, and the Titanic was "unsinkable!". Fujitsu's Horizon system was "reliable"!
Hehe. I didn't even finish reading and I knew where it was going!
Correct.
For the record the claim was that due to the double hulled design "the ship was its own lifeboat"
The concept of smacking into ice mountains ten times the size, weighing 100++ times more than the ship and with all the "give" of a granite mountain or that cast steel plates of the era became almost as brittle as glass in freezing conditions wasn't something that had crossed designers' knowledge set at the time (all their tests were in english conditions, not arctic ones and they thought of icebergs as little things they'd seen in Northern European waters)
One of my old bosses coded up a random password generator for the ISP he was working for at the time. Worked perfectly until it was demoed to some potential Japanese whereupon it proceeded to spew out all manner of Oriental profanities. They politely declined to invest.
At some point in the distant past, I had to transfer program updates to a secure system - and the only method from my remote location was via Base64 encryption and to email several parts. Everything was fine until one day the Base64 encryption put random English swears in the middle of the files...
Technically, base-64 is an encoding, not an encryption. It is trivial to un-encode, and is the standard encoding for images and attachments in emails.
The failure here, by the sounds of it, is some sort of "profanity filter" being applied to emails which doesn't distinguish between plain text parts and base-64 encoded parts, which in turn implies it was written very badly and doesn't actually know anything about the structure of emails, or look at the headers.
This does put me in mind of the possibly apocryphal tale of the vegetarian boss who was poking around with a disk editor, and was offended by an old machine's disk formatting which filled the newly formatted disk with the 64-bit word, which read, in hexadecimal, DE AD BE EF.
... I once left a "Custom" icon for my customers. The software I was building took tide information to allow the planning of shipping movements up and down a river (because the river depth varied a lot with tide, duh). So I left them a "Normal" icon, showing a ship in the water, and an "Alternate" that showed it listing dangerously while stuck on a sandbank. The customers seemed to appreciate it, and all chose the silly one for their desktops :)
Some years back (about 10) I was doing the base code for a microcontroller with GCC in an eclipse based IDE. Think bare metal and device drivers.
The default for that was live warnings (equivalent to -wall) which can be useful, but when setting up DMA channels among other things (where pointers abound in the hardware) it can prove to be slightly annoying.
The DMA descriptors are in RAM, but the addresses of source and destination are in dedicated registers (as they are for many things - check out the memory map for any ARM Cortex device).
I would get implicit conversion warnings so the code was littered with <someregisteraddress> = (uint32_t*) myvariable where myvariable had been declared as a uint32_t (because what was loaded was a literal value).
At some point I got frustrated and added a comment along the lines of
// cast to suppress GCCs verbal diarrhoea
My then boss was not impressed so I had to remove it.
In all fairness, this code was going with our hardware to a university for their algorithm development so he had a point.
Even more years back (30?) I wrote code in assembler for the then new PIC chips that I'd started to use in my company's products. As we were in to three-phase electrical measurement, most of out gear had custom transformers (wound on-site) to do all the physical interfacing. Being quite low tech, they has a bit of a phase shift which sometimes caused a bit of an issue when trying to accurately measure power, or provide synchronisation. In this particular case, I was using a differential transceiver chip to create a square wave representation of the zero-crossing points, but just couldn't get my head around the cumulative delays of the hardware. With deadlines looming, I threw in a few NOP statements and added a pithy comment that this was a bodge to be sorted out some time in the future. The code was good enough to sell thousands of products, and of course the code never got revisited.
Some years later I had moved jobs and was invited to speak on a course that involved my new company's technology. One of the delegates was my replacement at the prior company, and he introduced himself as the guy who found my comment and had to fix it properly due to a change in the chip supplier (and different characteristics). I just smiled.
I had to write some Delphi code to print some documents from disk files -- literally dump the files straight to the print queue, since they were pre-rendered HPGL plots. Pressed for time and in too much of a hurry to figure out the complexities of the Windows printing system, I threw in a system call to the DOS PRINT command with a comment along the lines of:
{ This is a hack and will need to be replaced by correct code later. }
I left that job a few years later with the program still working. About a decade after that, the company contracted me to make some changes to my code to fix a couple of issues they'd run into...one of which ended up being due to that line.
In the Data General D100/200 series of terminals, there's one character generator loction [corresponding IIRC to ASCII FF (or 00)] that only displays when you trigger a hardware screen test. That character at first appears to be a random assortment of bits. It is actually my first initial and last name, spelled out in ASCII, one 7 bit character per scan line.
"Caution: Deep magic here. Only alter this code if you really, seriously understand exactly what it is doing. Here be dragons."
Knowing future me, I'll eventually come across that warning while trying to debug (with no memory of writing the code), nod sagely, and simply verify I'm getting usable output from it.
You know your coding skills are either genius, or an absolute dumpster fire when you look at a script that's 5/10/ years previous to solve some stupid issue and you comment "Who the f&%k WROTE THIS SHITE!?!?" and then realize that it was, in fact, you, and the code still works exactly like it's supposed to even though it's using a scripting engine that's four or five major versions newer.
It's OK, they've got a solution for that: the Java EULA tells you (or it did at some point in the past) that the Software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Problem solved, job done, for sure!
"He also was notorious for finding edge cases. If your design had a 1/1,000,000 million chance of failure, it would fail every time he walked by."
Justin Woolley, Shakedowners, The Vinyl Frontier, Slack to the Future, and the I-have-not-read-since-not-yet-published fourth book. NO WAIT! It is there! 4EVA !
Was recommended here by someone else here in 2021 when it was new, a fantastic read. Or the highest German praise: I nearly didn't find anything to complain about.
About 20 years ago, I worked at the help desk of a software company. One day, a colleague took a call from an employee of a customer. That person thought he was being pranked by his colleagues, because every time he logged into our application, he was greeted with a message that he was a dick, and he wanted to know how he could undo it.
After some panic on our side, and asking around the company, it turned out it was an Easter egg one of our developers had created after he had become annoyed with (or by) one of our software testers, and entirely forgot to remove it before release. Unfortunately, the employee of our customer had the same login name, triggering the condition for showing the message.
The customer could laugh about it, and the developer got a stern talk from one of the owners, and I believe he had to audit our software for similar Easter eggs...
I worked on a graphics system which needed to assign a unique number to each graphics object.
If you somehow manage to create (over the lifetime of one instance of the system) enough graphics objects, it will say something to the effect of "You have managed to overflow a signed 64-bit integer. Save a seat for me at Milliways."
I wonder if I'm going to get a very annoyed text message from my old boss one day...
A sign was put on the test rack after a switch was borrowed to replace a faulty unit...
"Please do not take items without permission. If you do need to borrow an item PLEASE MAKE SURE YOU DEFAULT IT FIRST"
Yes, whoever last 'played' on the rack had left a rather fruity logon banner that was noticed when it was used at a Christian society
I was responsible for a shop floor web interface. Error messages which propagated SQL and deep application errors tended to generate cryptic messages that some of our mechanics had trouble identifying as actual errors. Until I incorporated a little animated GIF stick figure of a user, sitting at a desk, repeatedly smacking his head on a PC keyboard.
Yes, this is an error.
During a specification meeting with the client my boss asked what thye system should do if somebody tried to access part of the system they weren't authorised to access. "It should tell them to bugger off!" was the reply.
During a system demonstration a few weeks later one of the big bosses tried to access a menu item they didn't have permissions for and was greeted with a blank screen, which slowly filled up with ASCII art (this was in MSDOS days) which eventually said "BUGGER OFF!" in large flashing letters while the Monty Python therme tune played through the speaker. Big boss was not amused!
Many a VB hack to be found with fruity comments in amongst our older tools; usually along the lines of "the f***ing documentation for this function is incorrect.
One of our former employees, let's call him Angus by way of anonymisation while revealing origins, went to a consultancy that were often called upon to audit the work that we do. You then get into that rather odd loop of having to clean up his former code full of his language, in order to send it externally to said consultancy.
It was rare but you could occasionally find errors his work. The most prominent one was a data export routine that would always give it's output in degrees Rankine whether you asked for Fahrenheit or Celsius, while still labelling it as what you requested the output in. We did enjoy sharing that discovery a little too much :-P
One day, I got a call from a user. He was rather insulted that one of our websites had called him "Thickyhead" and told him to "Get Back". I asked what site was giving the message , and what he was doing to trigger the message.
I can't remember what he was doing, but the site was one we'd created to enable users to have their own MySQL databases, without accessing the server directly. For security, this server had IP restrictions.
I knew the tech who designed the site, and asked him about it. He said that was a joke error message, and should not have appeared. About 7 different things needed to have happened before the site would display that. I never found out what, but the user had somehow managed to trigger all 7.
Note: The phrase was actually an in-joke within our team. I forget the reason,
He replaced the error message with one that actually did explain the problem,
The "test suite" (such as it was; it was cobbled together more for show than anything else, because Sophie Wilson was legendary for getting it right the first time) for the ARM architecture contained some error messages that had never, ever been seen -- until someone other than Sophie tried to implement the instruction set in silicon. And the humour in those aforementioned error messages only got drier, darker and filthier as the edge cases became more obscure. All fair game in a UK R&D lab, where catching a colleague out with a light-hearted prank is a major motivating factor -- because the wages certainly aren't.
However, this test suite (which required getting together enough bits to put together a working Acorn Atom to run some parts of it) was sent out unmodified to the early ARM licensees -- exposing the stark cultural difference between British electronic engineers (who have seen -- and probably contributed to -- university rag mags), and American management types (who have invariably had a sense of humour bypass total enough to accuse Germans of levity and frivolousness).
They should have counted themselves lucky they weren't dealing with British mechanical engineers .....
That sounds like the plot of a bad film -- secrets are being passed to enemy agents by means of hard-to-trigger error messages deliberately implanted in computer software, an innocent user lands upon one of them by accident and finds themself unwittingly involved in the scheme .....
I have a system (text based) that originated back in the early 80's which had a ROM monitor that emitted "WTF?" if it didn't understand its input. The programmer (I was told) didn't want to change it, so it was documented as "With Trace Flag" as the explanation. Of course, we all know what it REALLY means.
Keep calm and carry on.
I once worked on some software that would decipher logs and error codes and do some simple OS tests for the field service people.
One of the tests did not work at a specific level of the machine's microcode.
I did NOT put in the message, "Upgrade microcode and press <RETURN>"... but as a joke, my weekly progress report to my manager did say that I'd done that.
Five minutes later he came almost running into my office...