I check The Daily WTF for their chronicling of interesting and perverse efforts in the software world. While the quality of the articles has… suffered somewhat recently, the commenters often produce utter gems. Such as this delightful offering in response to Extra-Boolean ‘logic’
Re: Extra Boolean
2014-06-02 06:55 • by QJo (unregistered)
|This leads itself to expansion:
Smidgeon of truth
Not Entirely Sure
… and so on.
Is it then possible to assign a complement operation upon an ExtraBoolean such that the complement of e.g. Seriously Doubtful is Probably True? Or does one need to posit the existence of statements whose extra-boolean truthiness and falsitude are in fact independent? e.g. a statement may be Most False but at the same time Possibly True? We could build an entire field of mathematics upon this concept. Perhaps model a statement’s Extra-booleanity on the complex plane: truthiness along the real axis and falsitude along the complex. Then a statement that is purely Political Statement, when multiplied by the negative square root of minus one becomes a Religious Conviction?
Might this analysis be used to get to the bottom of the relationship between US and UK during the early 2000′s?
Personally, I love the whole idea that a Political Statement multiplied by the negative square root of minus one can become a Religious Conviction. It explains so much!
Today was my day over at Mad Genius Club. Go read that instead of this.
Normal madness will resume sometime after tomorrow’s scheduled deployment at work.
The battle against invading thistle in the iris and lily garden, that is. The prickly invaders are relentless, determined, and nothing can keep them back for long. No matter how I hack, slash, and tear them out by their roots, they return to choke out the irises and lilies, to overwhelm the garden with their spiky nastiness.
But for now, for this precious moment, the garden is mine again.
Some of the educational images posted to the “gentleman’s” twitter feed can be seen here: https://twitter.com/search?q=%40toure&src=typd&mode=photos. Fair warning – they are stomach-turning, all the more so because they are cataloging something that actually happened.
I can’t say what I think about this because there are no words strong enough to encompass the level of disgust engendered by this piece of excrement’s blithe assumption that those who survived one of the worst slaughters of the 20th century benefited from “white privilege”. None that I can repeat in public, at any rate. No words strong enough to fully express the fury that this specimen is permitted to continue in his lucrative line of employment while others who have made far less bigoted statements have been hounded from public office, employment, and entertainment venues.
Apparently this end tag of excrement knows no means other than “white privilege” that could make good or bad things happen. This is an indictment not only of his personal mental candlepower (judging by the evidence, not enough to light one, maybe enough to keep one going), but of the schools and colleges he attended. He is a privileged fool who will one day suffer the consequences of his idiocy. He is fortunate indeed that most holders of “white privilege” are also civilized people and will not hunt him down to take personal vengeance for the careless insult he has given not only to the survivors of the Holocaust and the 6 million or so who didn’t survive, but to the estimated 100 million murdered by Communism (many of them pale-skinned) and the survivors of the Siberian labor camps, Chinese internment camps, Pol Pot’s Cambodian killing fields, and entirely too many more to name who have found their way to the United States of America with nothing but the clothes on their back (often donated by kindly strangers) and made a life for themselves. He has also insulted every black survivor of such horrors by implication – his flip dismissal makes it clear that he considers growing up black in the USA to be far, far worse than the suffering of those caught up in genocidal wars.
May he learn differently without having to experience the truth for himself.
I can’t decide if one coworker is ridiculously literal or what. I’m trying to convince myself the guy isn’t stupid, because you don’t have a programming career if you’re stupid but still… The best I can manage is that he’s mostly worked in a field where what he gets for specs is spelled out to the last crossed t and dotted i. Which does not work with something that’s grown like Cthulhu on steroids.
Take an interface to the Evil Third Party. It includes the ability (sort of) to do what is known as a Single Sign On – you log into my employer’s software, click a button and a new window opens with you automagically logged into the Evil Third Party’s software. To do this, someone has to associate your login for the Evil Third Party to your user account with Lovecraft, Inc (okay, that’s not their real name, but there are times when it feels that way).
So. You, being a good little programmer, are told that the Evil Third Party remote login feature supports the characters A through Z, a through z, 0 through 9 and a smattering of others including dash, dot and the at symbol. You are also told that Lovecraft, Inc wants to tell the users when they press the magic button if their login has characters outside the list. Do you:
- Block the software from saving any logins with characters that aren’t in the list as well as block the magic button if somehow someone manages to save something with “bad” characters?
- Get a second list that was being sent to Evil Third Party with a message to say “You told us your remote login worked with these characters and it totally doesn’t” and block only those characters from saving logins, but still block the magic button when the login has bad characters?
- Confuse both lists, fail to understand every attempt to clarify things, ask for reproduction steps when the tester tells you she can make the software save characters the DATABASE doesn’t understand, and then wonder why the tester is trying to put a head-shaped dent in her desk?
If you said number 3, congratulations. You are why I periodically harbor fantasies involving lining the streets with impaled programmers.
I gave myself a time out before I acted on said fantasies. Or asked said programmer if he was just trying to piss me off because I found some of the hidden places where everyone had missed a field size change and he didn’t like me pointing to lines in the code. (Three attempts later, he still hadn’t found the one missed size change I know is there. But he doesn’t want me “criticizing” his code, so he’s going to keep getting it back with “the field is still being truncated” until he works it out himself. His choice. I’d have simply said “here. This procedure, line 25. Change the declaration for this property to have a length of 99. Is there anywhere else that this thing could be hiding?”)
I started the code dives because this software is so convoluted changing something in one place is no guarantee you’ve actually done what you thought. After the fourth… fifth…. tenth time an issue bounces back because I’m seeing the same end result, I get irritated and so does the programmer.
Am I being so unreasonable here?
At least it seems to be. On the writing front this time: the man who founded Liberty Con and whose contributions to fandom are pretty damn close to literally incalculable has been “disinvited” as Archon’s Fandom Guest of Honor. If you want more information google “Uncle Timmy” and “Archon” and prepare to weep.
It reads like a setup job to me. On the face of it, one loud voice and a few “hear hear” mumblings in a semi-private forum were enough to convince the committee within a week that Uncle Timmy was doubleplusungood and had to be purged from the guest list. Pig’s arse, pardon my Australian. The con committee – or at least a quorum thereof – wanted him gone. Someone dug mightily and deep to find something – anything – that could be used to blacken him with the favored tar of the terminally politically correct: racism, sexism, or both. That they had to quote it totally out of context suggests they were clutching at straws and the speed with which anyone who might possible support Uncle Timmy has been banned from the convention forum is if not proof, then bloody solid circumstantial evidence.
That means anyone known to have an association with Liberty Con, Baen Books, and anyone who is friends of theirs, as well as anyone who has supported Uncle Timmy. It doesn’t have quite the scope of the Stalinist purges, but I get the impression that’s only due to lack of means.
This is, frankly, insane. Science fiction and fantasy fandom is not exactly a large community. Purging members of it for disagreeing with you – no matter how offensive you think it is – is little short of suicide. This latest SFF version of the Night of the Long Knives (we’ve had a few already) is going to have consequences, and those consequences will not be pleasant. Those of us on the side of the register that’s being purged are a little more prepared for this bullshit than those who are doing the purging. Most of us already know we’re on someone’s target list because we’re mouthy, we say what we think, and we figure if someone’s offended by facts they need to buck their precious little self up and learn to deal with life before life does the “elephant with a laxative” thing all over them.
People will have disagreements. Some will be valid. Some will make this little bit of idiocy from the Archon committee look like sheer genius. There will be anything and everything in between. Grow a pair (physical or metaphorical) and deal. Because if you won’t, you’re nothing more than self-important cowards expecting everyone else’s good manners to carry you through life. That never ends well.
All the problems with software are caused by the absence of one critical module. Alas, I lack the skills to write it, design it, or test it. The telepathy module is the one which enables the software to know what users really want and perform that action instead of the one triggered by the button or command the user actually clicked.
Since I failed Telepathy101 I can’t make this happen, but I offer the idea to anyone who wishes to devise their own telepathy module. It’s a winner, I tell you, a winner.
On the work front, they’re actually trying to get everything on the staging server there before the end of the week so I have – HORRORS! – almost a whole week to test the integration. Whodathunkit? Even better, I got into the nitty-gritty of the Team Foundation Server Report Server and built a report that should save the integration crew (both of them) about 8 hours collating the issues, changesets, and files.
Yes, files. For my sins I work with classic ASP, the web model that was supposed to have died over 10 years ago. Not in my world it didn’t. So of course, nothing is compiled or anything so sophisticated. Deployment means copying files around (because nobody’s managed to get the system automagically syncing the source control and the servers yet) and running scripts on databases. It’s still way better than things were when I first started this job a little more than a year ago – there wasn’t any source control and there wasn’t a test server either. Just a dev server that spent most of its time broken because of the stuff being worked on and the live server. Now things are a bit cleaner (and I can actually test things without stepping on people’s toes, asking them to patch something so I can do something else, testing live, or any of those other fun things) we’re tracking work in something a bit less awkward than fifty different excel spreadsheets (I’m not sure exactly how many there were – I never counted) and bit by bit we’re building something more or less systematic and functional.
On the home front, we have allergy central, The Husband is recovering from an argument with gout and can walk again, and the cats alternate between being demanding little bitches (yes, the boys too) and snuggling up and looking like fuzzy little angels. When they’re not on one of us demanding snuggles.
Oh, yes. And weekends are never long enough. Ever.
This afternoon was a classic example of missing the point of having a staging server. You know, the one that is mostly a mirror of the production environment which, being one of those web applications that thousands of customers consider mission critical, isn’t ever allowed to be down. The one that is supposed to have code and database changes intended for release migrated to it a week in advance so that any problems with integrating the several hundred bajillion lines of interesting code that have evolved over the years into a tentacly mess to rival Cthulhu himself can be found well before the targeted deployment date so that pushing changes to the live servers goes as smoothly as humanly possible.
What actually happened was this: integration started after lunch today. For a deployment tomorrow at oh god am. It finished shortly before I usually leave. So instead of several days to test the targeted items and maybe do some regression in the critical areas (trust me, full regression is the kind of dream that makes winning the lottery look like something that happens to you on a daily basis) I have in “official” work time maybe fifteen minutes. Naturally, I stayed until my balance started to go, and the developers were still arguing with the Wonderful Source Control that doesn’t understand the difference between a change and a file with a change so dragged in a bunch of other changes that aren’t going out at oh god am tomorrow morning.
Ladies, gentlemen, and others, the point of having a staging server is not so you can have two nervous breakdowns for each deployment instead of just the one when your integration crashes and burns on the mission critical live environment. The point is so you can do this strange thing called planning and have everything ready and tested against something that was just like the live environment until you did the integration. So you know (within reason – this is a black art we’re dealing with) that you won’t have any serious issues when you do deploy.
Oh, and when your one and only tester is narcoleptic? It’s a really, really bad idea to leave it all until the evening before you deploy. Just saying.
I spent most of today rerunning the same tests over and over and over and over – trying to get a fix through where each round of fixes broke something new. No, this wasn’t the developer’s fault. He’s dealing with a horribly “interesting” codebase with even more “interesting” legacy implementation choices.
Take a large web application with multiple customers. Users can be linked to one or more customers. The user has the login but they can’t to anything without picking which customer they’re working with. Naturally, there’s a linking table that connects users with customers. So far so good.
When you’re doing stuff with users, you can edit ones who are already set up with the current customers, you can create completely new users (who will link to the current customer) or you can link an existing user to the current customer. Still not so hard, right?
Right… Now, add the user identifier for the Evil Third Party Interface. Which must be linked to both the user and the customer. So, it gets added to the linking table because that’s the logical place for it. And now the fun begins. Because the person who is logged in can also have the identifier for the Evil Third Party Interface, and who gets to see what is controlled by privilege, to make sure this one new thing did what it was supposed to, I needed to check all sorts of things:
- I’ve got the Evil Third Party thingy, I’m a god user, and I change something else in my user record.
- I’ve got the Evil Third Party thingy, I’m a god user, and I change my Evil Third Party thingy.
- I’ve got the Evil Third Party thingy, I’m a god user, and I change something for someone else who has the Evil Third Party thingy.
- I’ve got the Evil Third Party thingy, I’m a god user, and I change something for someone else who doesn’t have the Evil Third Party thingy.
- and so one…
There ended up being rather a lot of these lovely combinatorial options just to check the addition of one simple field. The poor developer was as frazzled as I was by the time we finally got them all doing what they were supposed to do.
And this, Ye Who Do Not Test, is a pretty simple situation. Believe me, I’ve seen worse. I live worse. The last time someone asked me why I (the lone tester for a team of 10) don’t do much regression testing, I showed them my half-finished regression guideline wiki. Which is now somewhere in the order of 300 pages, all of them with multiple cross-links because one small change here can affect things in half a dozen other places, and the validation rules need to be seen to be believed.
Brainless checking is easy. Any monkey can do it. Testing? That’s hard. Figuring out the combinations in the first place is hard enough. Working out which ones you need is harder.