Sunday, February 24, 2013

Data


It's a strange feeling to be somebody's nemesis. On the one hand it's obviously awful that there is someone who holds you in contempt and would like nothing more than to see you wiped from the earth. To know that your every breath is an affront to all they believe in, that it is not enough that you be gone, but also that all memory of you be scrubbed from history. On the other hand, there is perverse pleasure to be taken in the power this gives you. One word can send them in to paroxysms of rage, their whole day can be ruined by nothing more than a reminder of your existence. It's hard not to play with this a little from time to time, hard not to pour water on the anthill just to watch them run around in panic.

At this point you might, quite fairly, be wondering what I could possibly know about nemeses. After all, it's not as though I'm some sort of international man of mystery or a classic Moriarty-eqsue arch villain (or am I?1). I am a mundane, middle class software developer from nowhere interesting, how could I possibly have a nemesis? The key part is 'software developer', so I am talking of course about database administrators, or DBAs as they are more commonly known. The DBA has a simple job: make sure the data is secure. Keep those who shouldn't be able to see it from seeing it, and don't let the integrity of the data get compromised in any way. It may be a simple job, but it is not an easy one, or so harried DBAs keep telling me. My job as a programmer is to store and access data, modifying it where necessary, massaging it into a user friendly format. To put it another way my job is to make the DBA's job more difficult.

I sympathise with them to some degree. Auditing, transaction logs, offsite backups, a whole world of processes and concepts that wouldn't exist if developers didn't want to mess around with the pristine data. Every time I need to talk to a DBA it's because I need to either see more data (clearly a privacy concern), modify data (even more clearly a data integrity concern), or sort out a way to send data to a third party (both a privacy and integrity concern). Lord above, I'll probably want to do it using some horrible denormalised data format as well. I think nothing I've ever said has made a DBA's face contort in horror quite like "we're importing it from an Excel file sent as an email attachment by [company name redacted]."2 Then again, if nobody ever wanted to view or modify the data, the entire DBA industry would be nothing more than an elaborate, high tech Rube Goldberg machine that existed solely to keep obsessive data hoarders from interacting with the rest of society. Which would be an awful thing to do them. Obviously.

The DBA's self image seems to be one of the guardian in a remote medieval fortress, tinder dry scrolls of ancient knowledge and great import stacked oh-so-carefully, indexed with a complex but elegant system. Then one night in tramps some great brute of a programmer demanding to see those scrolls, only he's not sure which one it is and he doesn't want to know about the elegant system, so he starts flicking through them at random. There is moonlight coming through the narrow windows high above but he insists on lighting his way with a flaming torch from which sparks jump ever closer to the precious artifacts. Those scrolls found to be of no immediate use are dropped on the floor only to be covered in muddy footprints by this thoughtless oaf. Eventually he grunts something about deleted flags and storms out, leaving the stunned DBA alone, enraged, and feeling violated. Hackers might be the barbarians at the gates but at least they start outside; programmers are the barbarians who got let in and given permission to do as they see fit.

It's understandable that if your job is to protect data then you would hate the people whose job it is to mess around with data. So it's all right to hate me, DBAs, but if you could just go ahead and give this user the db_datawriter role anyway, that'd be great.

1I am not
2That made me kind of sick, too, if I'm being honest

Sunday, February 17, 2013

Door, Again

I decided upon reflection that my previous post wasn't as on topic as I originally intended, so here's a more relevant piece.


I have run a lot of D&D campaigns over the years, and the first door of the first dungeon is a more important decision that you might think; it can set player expectation for encounters for the rest of the campaign. I am assuming here that you're running a campaign that has a certain amount of dungeon crawling in it, because if you're not I strongly recommend finding another roleplaying system with decent non-combat support, for example any other system at all. There may be a long delay, there may be other encounters beforehand, but at some point you'll end up with the players in a dungeon. It could be a castle, a mansion heist, old ruins, a cave system, the non-Euclidean planes of chaos, or an actual dungeon. The end result is the same: the players won't be in it and will cross a threshold and be in it.

What, then, is your first door? The first question is whether or not it's locked, and straight after that whether or not it's trapped. An unlocked, untrapped door sends a message to the person playing the rogue that he may have invested too heavily in the dungeoneering skills. Let's assume the door is locked and trapped. Is it locked in the traditional sense that there is a key for it somewhere? Maybe there is a key and you've set the DC of the lock too high for any of the players to be able to pick because you want them to go on a fetch-quest. Now the players know that sometimes you're going to gate them regardless of character abilities. You could choose to have no key and force the players to use the skills they've chosen. The other kind of lock, which is really a construct of the fantasy world, is the puzzle. Puzzle locks are a clear statement that sometimes players are going to have to solve things independently of their character sheets. Puzzle locks require the best understanding of the group you're playing with. With some groups it might be all right to lock a door with a puzzle based on the Fibonacci sequence, other groups may think Fibonacci is that thin spiral pasta. Can you make a Shakespeare reference, can you use the Macarena, is the difference between an alligator and a crocodile assumed knowledge? If it's trapped, how dangerous is the trap? It might just be the character who tries to open the door suffers a small amount of damage, enough to communicate that they should check for traps in the future but there's no massive penalty for failure. Or it could be the other end of the scale, fatal or near fatal damage. The difference between these two options dictates more than anything else the speed at which players will move forward in the future. There's nothing quite like a member of the party getting killed before the party has even entered the dungeon to make players search every flagstone exhaustively before setting one foot into a room.

Beyond the mechanical decisions, there's also thought that needs to be given to the nature of the door. Let's say it's a pretty standard swords and sorcery dungeon with a large stone door at the entrance. It's probably not just a large stone door, though. Moss lays thickly across its base, cobwebs woven by ruby red spiders hang like curtains. Perhaps grotesque carvings decorate its front, demons engaged in the most perverse acts of torture and abuse, their bronzed claws green with age. If you're elaborate, players won't assume any mention of cobwebs immediately means giant spiders (giant by D&D standards that is). If, by contrast the description is that the door is five feet by ten feet and seems to be thick stone, then future details are likely to be regarded as important. As a DM it can be disappointing to have to say "I know I said there was a religious mural on the wall, but that was just flavour text. It's been an hour, someone please just pull the damned lever already."

It can be tempting when designing a dungeon to start with the cool boss fight at the end, with the loot, or the fiendishly clever twist on the Tower of Hanoi you have planned for the main chamber, depending on your personal preferences. As with any other endeavour, however, remember that first impressions count, and most of the time the first impression is a door.

Next week: still data.

Door


At least he doesn't have to look himself in the eye. The brushed steel door of the lift reflects him back as a barely human smear, a charcoal and white blotch without the fidelity to show judgment. His finger moves towards the button on its own accord, it takes a lot to interfere with that kind of unconscious motion. The clear plastic button lighting up is accompanied by the smooth mechanical sound of a dozen fail safes not having to kick in. He becomes aware of a person moving to stand next to him, the unusually close distance acceptable only when waiting for lifts or walk signals. Three tinny notes and a buzz from his jacket pocket. Fifteen minute reminder. His fingers are sweaty, dragging enough against the screen as he swipes that he ends up hitting snooze instead of dismiss. The numbers indicate the lift is at the fourth floor and descending. It's too much. He walks away looking at his phone as if he has a message and leans against the cool wall. The sound of the door opening is loud but has a delicate hiss that makes it seem quiet. It slides shut, swallowing the person who had stood next him whole. He tries to look like he's waiting for someone, not like he's barely able to stand. Nobody seems to notice so it must be working.

Three more times he watches someone step into that cavity and get whisked away, and each time he gets closer to getting in, but never does. His pocket buzzes again. Five minutes. His stomach twists, pushing hot and sharp into the back of his throat. Around the corner and into the toilets. The stalls are all empty so he takes the closest, hangs his jacket on the back of the door and pulls down his well pressed trousers. Nothing but cramps and the burning in his throat. Reaching awkwardly for his jacket he retrieves the foil sheet studded with antacids. He pops out two white discs and crunches down hard. Peppermint chalk fills his mouth and absorbs what little moisture there is. Chew, chew, swallow. Buzz. Zero minutes. He's late. Three deep breaths and the comfort of little rituals: flush toilet, double check zip, turn down jacket collar. Don't look in the mirror. Paper towels, scrunch and drop in the bin. Don't look in the mirror.

He makes his way back to the foyer and sees the lift door closing. A forearm shoots out and the door slams back open to reveal the face of someone just doing what's polite. Now he has no choice and doesn't even get the satisfaction of making the decision himself. He gives the necessary smile of gratitude and muted thanks then watches as his finger hits the button marked seventeen. The slight lightness in the stomach as the lift accelerates is completely drowned out by the unabated churning. The polite door-holder gets out at thirteen, he waits until the door closes and hits the buttons for every floor to come. Fourteen. He lets the corner of the lift take his weight. The door opens and closes slowly, but not nearly slowly enough. Fifteen. He shrugs at the woman who raises a eyebrow when nobody gets out and pretends to hit the close button. Sixteen. He closes his eyes, doesn't see display flick over to seventeen but feels the clunk as something heavy locks into place. The door opens one more time.
"Good morning." He extends the first word to breaking point.
"Good morning." the empty good humour of rote banter, "Ready for another big week?"
"You bet." A forced smile, a nod, the lingering taste of peppermint chalk.

Next week's word is data.

Saturday, February 9, 2013

Competition


We don't play Trivial Pursuit in my family, not any more. It's my fault. I demanded a correct answer and that was the end of it. I can't even remember the question but I can recreate the scenario with a similar question. It was the middle of the game, nobody was particularly far ahead or behind, the category was sport.
"What," my dad pauses dramatically and distractingly as he always does when reading trivia questions or Christmas cracker jokes, "sorry, who. Who," another pause "won Australia's first ever Winter Olympic gold medal at the two thousand and two Salt Lake City Olympic Games?" Four deflated looks from the players not getting to answer. An easy question if you're an Australian, an answer that has literally become a byword for undeserved victory.
"Um." My brother and I look at each other in hopeful disbelief. Does my sister not know? Is she going to miss a piece on a gimme? "someone Bradbury?" Hah! She doesn't know. I go for the dice.
"Yup," says dad. And so begins the end of Trivial Pursuit in the Dibley family. The answer is in fact Steven Bradbury. My opinion is simple: the answer on the card, the correct answer, is Steven Bradbury. Getting the last name is a good effort but it's not the full answer. There is some disagreement. My brother doesn't care and didn't want to be playing in the first place. Mum and dad are of the opinion that it's close enough. Close enough? What happens when there's a question about the start date of World War 1? Is "early 20th century" close enough? As can happen in my family things get quite loud and lively, people start throwing around "it's only a game", the score is left to stand after I am outvoted, and the game continues. We haven't played since that day because "Bice gets all worked up about it".

Only a game. It drives me mad when people say it about the playing of a game. They don't want to stick too tightly to the rules because that's not nice, reasonable, whatever. After all, it's only a game. What is meant is that not too much attention should be given to the act of playing, it's just an amusing distraction. But consider a slightly different interpretation of "only a game": it is a game and nothing else. Picking up and putting down cards is not fun, moving small wooden blocks around at random is not a leisure activity, and throwing a dice has no self contained context. Removing the rules from a game leaves a series of meaningless actions. All the game has in order to provide meaning is the structure of the rules that define it. Do you always have to play to the strictest interpretation of the rules? No, but you do always have to play strictly to the interpretation of the rules that the players have agreed to. Otherwise it becomes something else. I'm not sure what it is at that point but it's not even a game, never mind only a game.

Meanwhile, later in the same game, I got a question "what is the only American state whose name is in the name of its capital city?" I answered Indianapolis. The answer on the card was Oklahoma City. The ruling was that it wasn't the answer on the card so I didn't get a piece despite the fact that the answer I gave was correct. We're all adults so I'm sure nobody actually stuck their tongue out at me, but it sure felt like it.

I hate Trivial Pursuit.

Sunday, February 3, 2013

Crisis


One of the biggest problems facing the modern journalist is how to effectively report on the never-ending stream of civilization-threatening crises that punctuate modern life at a rate remarkably well tied to news cycles. Luckily my position as an uninformed layman gives me the perfect qualifications to help out (see point 5) with my handy six point Crisis Reporting Plan.

1. Find a crisis. You may think that something as bad as a crisis would be easy to spot, but not so, some crises are so bad that nobody else even notices them. There are many types of crisis that it is your duty to report on: bureaucratic incompetence, a politician saying something, corporate fat cats doing anything that results in customers paying more money, or there might even be people in boats on or around the Australian coast. Most important of all, there may be several inches of column space with nothing to fill them, the greatest crisis of all.
Sidebar for sports writers: did a team lose on the weekend? Was it their second consecutive loss? If so you have a coaching crisis ready to go. Even better, did a player express an opinion on Twitter? Clear the back page, sounds like you've got a furore ready to go.

2. Call it a crisis. It is critically important that people be made aware that this is a crisis. If you don't tell them with words like "Crisis", "Scandal" and "Bungle" people may doubt whether it is newsworthy, never mind the disaster you know it is. If all else fails and you can't convince people that society is facing a serious, crippling disaster, the next best option is to call it an impending crisis. You need almost no corroborating evidence to suggest that something is "about to" reach boiling point. It also has the advantage of being open to follow up stories.

3. Put a human(ish) face on the crisis. It is easier for people to understand the nature and importance of a crisis if you can illustrate it with the story of a person's (or cute animal where appropriate) specific experience. The person you have might seem on the surface to be an entitled asshole, or someone whose rudimentary grip of societal norms has resulted in a problem of their own making, but keep to the negative elements of the story and try to involve sick, or at least pallid-looking, children if possible.

4. Abuse Mathematics. If there's one thing you can rely on in a crisis, it's that people will be more worried if you can back in with solid numbers. If you don't have solid numbers, shaky numbers and fast footwork can be used as a substitute. Among the useful techniques available are: blurring the difference between a percentage increase and percentage point increase to inflate changes, poorly labelled graphs with condensed or logarithmic scales, not mentioning errors bars, mixing percentages with raw numbers, and of course using the mean where it is completely inappropriate. Not strictly a mathematical dodge, it can also be useful to compare similar but different statistics, for example compare the number of fatal motor vehicle accidents in one year with the number of fatalities in another year. It's an obvious distinction, but say it fast enough and nobody will notice.

5. Vox Pop. Everybody knows that experts in the field and the people directly involved can't be trusted, if they could there wouldn't be a crisis in the first place now would there? The only thing to do is take to streets and find out what the average punter thinks. It might look like a complex sociopolitical issue but Gary, 43, from Claremont is just the guy to clear it up. The advent of social media means that you won't even have to go to all the effort of going outside any more. Just ask viewers/readers to tell you they think using #endofsocietyasweknowit and publish the most inflammatory responses that come through.

6. Repeat. Good work, you've made people aware of the crisis and created a public outcry. But that was yesterday, there's a new front page today. It may be a crisis but you can't expect people to pay attention to it for two days in a row. Time to find the next one.

If you make sure you cover the six points above you will not only be able to turn a molehill into a mountain, you will be able to convince people that the mountain was created by government power brokers and funded through a slush fund that took hard earned money straight out of the pockets of the hard-working taxpayer. Sure, it may not be entirely accurate but it sure sounds awful.

Next week: competition.

Friday, February 1, 2013

Freezing Up

Normally when I procrastinate, I do so through the medium of games or television. Gaming is easy if I have a game I want to play but at the moment I don't have the games I want to play, and it's more difficult to procrastinate when it will take a three or four hour download before you can start the activity. Meanwhile a tree in the backyard has grown tall enough that is blocking the signal to the satellite dish for television, leaving me with only the free to air channels, and I am not yet so far gone that I can be distracted by Australian commercial television. The end result of this is that I've had no choice but to make some in roads on a few of my pet projects.

Hah! Not really. What I've done instead is distract myself with cooking. This is a bit of a surprise to be honest, and a frightening insight into how far I will go in order to not do something I think I should. The results of this bizarre tangent have been tasty for the most part, and culminated last night with semifreddo. Using this base recipe I concocted four small tubs of semifreddo each with a different flavour. Rather than go for something obvious, I of course decided to get weird, on the grounds that if I was just following a recipe it wouldn't be as finicky or time consuming as making things up.

Flavours

First up is the chai, the least complex of the four. Make up a batch of chai herbs/spices, grind to powder, fold in along with some honey. Too easy, really.

Second was the Devonshire tea. No flavouring needed for the semifreddo itself, which is already cream, so that part was easy. I poured in half the tub worth, then added a series of hefty dollops of strawberry jam. The final touch, but actually the first thing done, is the tea sugar. I steeped six teabags in a cup of boiling water for about twenty minutes, then put in the heat and mixed in sugar until no more would dissolve. The result was the little flakes you see, which have a surprisingly good tea flavour to them, so that experiment was a success.

Third, not an original idea, was the stout and beer nuts. I have seen stout ice cream before and it seemed weird enough to give a shot. I asked +Jason Imms what a good stout was, purchased a Cascade Export Stout, and then went to work. I heated the stout to a boil and reduced it to about half volume, then added about half of that to the mixture. I would have added more, but most of the stout just ended up sinking to the bottom, although enough stayed to produce some flavour. To finish it off I added a handful of crushed beer nuts (the roasted peanuts with the husk bit still on). If I was making a batch of just this I'd definitely reduce the stout down even more and add it while whipping the cream (or maybe making the custard) to avoid the sediment problem.

Last flavour was gin and tonic. The gin an tonic itself was a 2:1 tonic:gin combination mixed 2:1 with sugar, heated, and the alcohol burnt off. That bit probably wasn't necessary, but I got to set fire to things, so it happened. Added some gelatine sheets, put in the fridge overnight, and there you have G&T jelly. I set it quite stiff, then cut it up and folded decent sized chunks into the mix. Then adding the garnish was just a matter of adding some lime zest (I would have used lemons, but the shop was sold out), and some cucumber pulp to the semifreddo.



Taste

Overall the base recipe was really good. It froze to a slightly soft ice cream texture that was eminently eatable straight out of the freezer. As for the modifications, something of a mixed bag. Best result was the chai. It tasted like a chai latte, only cold. I think having the right strength of flavour helped no end. Also the best texture, probably because it had less crap mixed into it. The stout was surprisingly good, the flavour was very light and tasted like a smoky toffee. In the photo it might look like there's some sort of peanut toffee layer, but it is fact just the stout that settled on the bottom; would not recommend eating frozen stout. The Devonshire tea was nice, but the jam flavour overtook everything else. I think thin strands of it would be the way to go. The G&T was interesting. I was concerned I hadn't put in enough lime, but the flavour was very pronounced. The jelly, on the other, had barely any flavour at all at that temperature. Left in the mouth to melt, the flavours came out a bit more. Not sure if the solution would be to make a more concentrated jelly, or if being frozen just kills the flavour regardless.

Overall I'd say the results were all right. Most of them could have benefited from the flavour being introduced during the whipping or folding stage rather than after, but that's the result of making four batches at once I suppose. I wasn't really keeping much track of quantities but getting the strength of the various elements right would probably take quite a bit of experimentation.

And there you have it: what I do when I have things to do and the television's not working.