Hacker Noir

Lars Wirzenius

work in progress

Hacker Noir

This work is copyrighted by Lars Wirzenius, and licensed under a Creative Commons Attribution-Share Alike 4.0 Unported License.

Acknowlegements

I used to have a Patreon project open for this book. The people who enthusiastically give me enough money to have their names in the book are:

Mauri Sahlberg

Rob Kendrick

In addition there are several who donated less.

Thank you all.

Accomodation

We were sitting in the conference room in our little office. The mood was tense. The whole team was present, since we were considering taking on a new project for a new client.

“Why the RUDE WORD are we talking to these people again? We already rejected them last year!” Robin is our architect and lead developer. She’s experienced and by far the most opinionated of us. After a lifetime of working in software development, and being belittled, harassed, and disrespected by colleagues, bosses, and everyone else, she’s the least inclined of us to compromise.

“It’s been months since our latest client, and the company bank account is getting low. We need income, and we need it soon, or we won’t be paying salaries by Christmas.” I love Robin, but she does need things to be spelled out clearly, from time to time. Luckily, that’s what I’m good at, and being patient is part of my job. “These guys are flush. They just got a ton of VC money last week. They’re also desperate. Their whole current product line is broken, and not likely to survive another security catastrophe. If we play our cards right, we can earn enough of a fee to cover our salaries for several months.”

“I’ll grant you the money aspect, but we don’t usually accept clients that are difficult to work with. Am I alone in having my spidey sense tingling?”

“No, I’m apprehensive as well.” Andrew is our senior developer. He’s always calm and composed, and as unflappable as a cow watching trains. “Last time we rejected them partly because they’re a Silicon Valley style brogrammer startup, and all that entails.”

“I know someone who works there. They’re at least not openly racist or sexist.” Nina, our sysadmin and operations specialist, is also the company cynic.

Robin sits up, worry lines smoothing on her face. “Nina, if you say they might be tolerable as a client, I’m willing to reconsider our rejection of them.” Nina draws the right side of mouth into a smile, which doesn’t reach the left side of her mouth. An evil glint shows up in her eyes.

“I’m not saying they’re good. But we should look at them and give them a chance.”

I raise both of my hands, hands flat, palms outward, in a sign that everyone should be calm. In Andrew’s case, that he should stay calm, since he’s never anything else. “I sense a rough consensus that we should give them a second chance. I suggest that I meet them to discuss the project, and to explain our ground rules. After that, we can discuss the situation. If it doesn’t look good, we can reject them again. If necessary, we can vote. As usual, everyone has a personal veto and can stay out of the project, if the rest of us accept it. Deal?”

That’s a thing we established when we set up a company with Robin. We’re contractors, and while that means we have to accept clients and client projects, both Robin and I have plenty of experience working for unpleasant people. Every new job, and every new client, brings a new group of people who need to be taught basics of software development processes, or basic human dignity. Several years ago we started our own company and one of our core values is that we don’t work for arseholes, and we reject potential clients if we don’t like them, either entirely or each team member separately. This has made our lives much better, but we only get away with it by being really good at what we do.

I get nods from everyone, except Robin. She looks thoughtful for a few moments, and looks around the table at everyone, then finally also nods. Everyone stands up and leaves the conference room to continue their day. We’re between paying projects, so there’s practice runs and studying and experimentation with new tools going on. I stay, to finish the meeting minutes for our internal wiki, and to send an email to set up a meeting.

I had chosen Cafe Aalto as the place to meet. It’s well-lit, not crowded, and serves a marvellous hot cocoa. A bit noisy from time to time. Also, it’s located so it’s easy for everyone to come there. I’d brought Robin with me so that we could go over hardcore technical details. I’m not entirely non-technical, but I quickly get out of depth once we leave the big picture level. That’s OK, since my role in the team is facilitator, project manager, and customer interface, and it’s enough for me to understand the tech on a conceptual level. Robin and I had walked from our office, and had occupied a corner table, for some extra quiet, and Sam had soon joined us.

I prefer to meet clients on neutral ground, rather than in a meeting room at either their office or ours. People are more relaxed and more amenable to having their mind changed that way.

This cafe isn’t ideal. It’s got a hard acoustic environment, so things echo a bit, and there’s usually a bunch of Japanese architecture students studying the building. The building is designed by Alvar Aalto, the famous Finnish architect.

Sam isn’t relaxed, but that’s probably not because of harsh echoes. He’s nervous for his company, and under quite a lot of stress. He’s quite visibly upset. “What’s going on? I thought we’d talked already, and had an understanding. We need some work done, and you are available. Why are we having another meeting? Why aren’t you working and piling up billable hours? We’re not paying for idling away in meetings.”

Robin was changing her posture, shifting in her chair. I could sense the anger bubbling in her, so I rushed to cut her off before she said something to drive Sam so far up a tree I wouldn’t be able to talk him down. “I think there’s some misunderstanding. You and I met, and we talked, and I got a general understanding of what you want, but I did say I have to talk this over with my team. I’ve now done that, but some issues were raised that need to be discussed with you. I brought Robin here to aid that discussion, and for technical depth in case it’s needed.”

Sam took a deep breath, which clearly calmed him down a bit. “What issues?”

“To start with, your company doesn’t have a strong reputation for technical quality. On the contrary, generally speaking your stuff is spoken of as cheap crap. We prefer to make quality stuff that lasts.”

“That is exactly why…” I cut him off. This part is going to be painful enough without having to hear him explain his side. “Please, let me explain our issues completely before you defend yourself. Here is the situation as we understand it. You produce a line of gadgets for so called smart homes, which mean controller, sensors, and displays to automate parts of the functionality in a home, so that those living there can adjust lighting and heating via their smartphones, even when not at home, and can see temperatures, energy use, and so on, again also when not at home. Pretty basic IoT stuff, in other words, except you’ve managed to capture a large share of the market, which puts you in a potentially very nice position, financially.”

Sam nods. I continue.

“Unfortunately, your stuff is of low quality. At least three times in as many years your gadgets have been cracked, and used in botnets, to participate in the largest distributed denial of service attacks the world has seen. This has been noticed by the media, and you have enough egg on your face to feed a shipful of hung-over Englishmen who want breakfast. The general theme among those who write about these things seems to be that if you don’t get the security of your gadgets fixed in the next generation, it’s over for you. You’ve been working on this for months now, but your whole corporate culture is against you and you’re failing to solve your technical problem. That’s why you need us, or someone, to solve them for you.”

“That’s quite blunt.”

“I prefer to be blunt. It lets us find the real problem, and discuss that, instead of dancing around your sensitive feelings.”

“Fair enough. I wouldn’t have phrased things quite so starkly as you did, and I don’t think we’re quite as desperate as you say, but let’s ignore that. What do you suggest? And why wouldn’t you work for us?” Sam as clearly not as stupid as he looked. He’d taken my criticism quite well, much better than most of the prospective clients I had to get blunt with. So far, so good.

“The main issue we have is in fact your corporate culture. You’re a startup, in the worst Silicon Valley style. Almost all your people are young white men, and you have a strong macho culture. Long hours, hard work, hard play, all the hallmarks of being manly men who win. You got a big pile of venture capital cash recently, and that won’t help. Your culture, and the way your people behave, was bad enough last year, when we talked the first time, and that was why we turned you down then. In fact, your company projects a strong brogrammer image, and we usually avoid dealing with such people.”

“I see.” Sam wasn’t taking things nearly as well as earlier. He was clearly very upset, even his hands were shaking. I was counting on him to be desperate enough to save his company to let us do things our way, and for that, I needed to shake him so he was properly scared. Had I gone too far? No, he was upset, but controlling himself. He stopped the shaking by forming fists with his hands. His knuckles were white. He was breathing slowly, deliberately, and deeply.

“I can’t say I’m happy to hear this, of course.”

“Would you like to discuss possible ways in which we can deal with this and find ways in which we can work together?”

“Yeah, we’d better do that. What do you suggest?”

“You said you know the reputation of our company. I know it too. We’re small, but we deliver what we promise. We’re challenging to work with, and we require a lot from our clients. The client needs to conform to our requirements, instead of the usual other way around. We do things differently, and we don’t compromise on our methods, and we charge a lot, but we deliver. As long as we deliver, nothing else matters to our customers. With me so far?”

“Yeah, that reputation is why we want you.”

“One of the cornerstones in a customer relationship for us is that both sides can trust and respect each other. On our side, we can’t be productive if we feel we’re not treated well, or if we can’t be blunt when that’s needed. On your side, if you don’t trust us to deliver, there’s no point in tolerating our eccentricities or us challenging you to do better.”

“We don’t believe in blind trust, so our standard contract includes a code of conduct, regular reviews of the situation with the possibility of amending the contract, and a commitment by you that you’ll provide certain things so we can work efficiently.”

“What kinds of things?”

“Most importantly, someone from your side who acts as a product owner in the Scrum method sense. Someone who knows what the product should do, can make decisions about any unclear aspects, and is available full-time for this. Otherwise we end up waiting to get answers. There are also some practical details about work space, chairs, tables, lighting, 24/7 physical access, and Internet connectivity, but those are only important if you insist on us working from your premises.”

“I’m sure we can have a product owner. The practical details can surely be arranged, but we would like to have you on our premises. It’s easier if we can talk in person, than doing everything over email or video calls.”

Robin has also, by this time, calmed down a lot, and so when she rises a finger to tell me she wants to say something, I give her a little nod of encouragement. “We prefer to work from our own office, but we’ve worked on customer premises before. It is sometimes hard when customer IT isn’t co-operative, but we have ways of working around that. If we can occupy a large meeting room, bring our own chairs, and arrange our own Internet connectivity, we’ll be OK. We’ll bring our own servers and set things up in the conference room so we’re comfortable.”

I jump in. “Let’s assume we can sort that out. I’ll email you, Sam, our standard contract and you can review it with your people. Now, since we have Robin here, should we talk about the technical problems that you need to solve? I know you’re not a techie, and before we take on this project, we’ll want to talk to your people in detail about this, but we can get started. I think Robin already has some ideas for you to consider. Robin?”

“Yeah, so I’ve reviewed your public documentation for your products. Also, a bunch of magazine articles and blog posts. Did you know there’s a whole blog dedicated to describing how shitty your products are?”

“I know. We’ve spent a small fortune on lawyers to shut it down.”

“Well, that’s one of the first steps to take. Stop attacking your critics, it just makes things worse for you. I also spent an evening at a friends house getting some hands-on time with a couple of your products, and I’m not happy.”

Sam’s shoulders are hanging. His voice seems defeated. “Why?”

Robin is clearly having a good time now. "It took me only half an hour to get into a root shell. You have a telnet port open, and as soon as I figured out that, and used the Google search engine to find a list of you hard-coded root passwords, I was in. That’s 1970s security, it’s not nearly acceptable today. From my research, you also have no upgrade system, so as soon someone finds a security hole, your users have to buy a new gadget to get it fixed. Another thing that is no longer acceptable in modern times.

“Based on this short black-box evaluation, and pending discussion with your techies, my initial suggestion is that you need a completely new software platform for you next generation products, one that’s built to be secure and updateable. We have that. You also need processes for preparing and distributing updates to you users, and to take on the responsibility of providing the updates. We can help with that, but you’ll need to do the bulk of the work. You also need to port your actual applications to the new platform, and that’s probably not something we can do for you.”

“This sounds like you want us to start all over from scratch. That’s going go be a hard sell to our investors.”

I smile an evil smile. “They’re going to like bankruptcy even less. If you want help convincing the investors and stockholders, or your management or developers, well, we can help with that too.”

“You’re so very helpful.”

Robin, Nina, and I are at the SmartHome, Inc, headquarters, in a large, lavish board room. Mahogany walls, a large oval table, comfy, well-padded leather chairs, a huge monitor, and power, network, and display sockets in the desk surface at every seat. All three of us are plugged in, and prepared to give a talk to the senior techies about what we think their problems are, what our own platform is like, and what we offer to do for them. This could go either really well, or really badly. We’ve decided for a strategy of shock and awe.

The SmartHome techies arrive in three clusters, and seat themselves in the opposite end of the table from us. Most of them seem subdued, with a couple of exceptions, who mostly seem belligerent.

I nod at Nina, who opens her laptop and starts typing. I stand up and face the audience. “Hello, everyone, my name is Anna Carter, you may call me Mrs. Carter. I’m the friendly face of The Team, and Sam has asked us to help you develop the next generation of SmartHome products. You may know that SmartHome products have a bit of a bad reputation when it comes to quality and security. To confirm this, I’ve collected some quotes from recent product reviews, and from Twitter.”

The audience shifting in their seats. I can see several of them getting ready to jump to the defence of what they’ve built, or have had a hand in building. To keep the upper hand, I tap the keyboard on my laptop, and my first slide appears on the big monitor, accompanied with Joan Jett singing “I don’t give a damn of my bad reputation” via the sound system.

“Here is a screenshot from the latest review of SmartHome products in Ars Technica. I’ve highlighted the important bit.” Ars is one of the tech news publications with a strong reputation and general respect. The highlighted quote reads, “The latest version of SmartHome’s hub still has bad security. Our review sample had been infected by a botnet when we received it.”

I let the quote sink in for about three seconds, and change to the next slide, which has quotes from Twitter. The kindest is perhaps one saying a SmartHome hub is the perfect way to let you neighbour’s kid control your heating.

“There’s more quotes, but they just continue the theme, and I’d prefer to not show the ones that are just name-calling and discussing the ancestry of SmartHome developers.” I glance at Nina, who nods. “Instead, I’ll let Nina give a short demonstration.” I use the remote control to show Nina’s screen on the monitor.

Nina stands up. Not that it matters much, she’s short, and standing on the floor seems as high up as she was sitting in the chair. No matter. “Hi, I’m Nina. Just Nina. I’m the sysadmin in the team. I like to play with security stuff, and I’ve just owned your office.” She taps a key. The room lighting turns off, as does the monitor. “Your office is stuffed with your products, and that’s good. Dogfooding is always sensible.” She taps another couple of keys. There’s a click-clack from the board room doors. “Except when your dogfood is insecure and can control your locks and your heating. I’ve changed the password for you.”

The SmartHome techies are looking at each other.

“Please look at the big monitor.” The monitor shows a window with clickable buttons like “board room locks”, and “heating”. “You should know that application. It’s the open source HomeApp application, which someone’s written to control your gadgets. It’s quite popular, and it’s included in Debian, so it’s readily available. Works quite well, and requires practically no configuration. I installed it before we came here, and I took over your office devices just now. I didn’t even have to try.”

“Now wait minute! You can’t do that!” Olaf, one of the seniors stands up. His face is red, his movements are abrupt, like stop-motion animation. Nina stands still. “I just did.”

“But how? It’s all firewalled and password protected.” The stop-motion old guy clearly doesn’t believe what Nina is saying. He shakes his head.

“First, I’m inside your firewall, remember. My laptop is on your guest wifi. The wifi password is printed in the wall. It’s just like vampires. Firewalls do not help when you keep inviting people into your home. Second, while your gadgets indeed do have a password, and it isn’t the default factory default, it’s the same password as for wifi. Which you print on the wall. Also, it’s the third result if you google for ‘smarthome office wifi password’.”

The old guy sits down. His face is now quite pale. The room has started to heat up. Everyone else loosening their ties, or removing sweaters.

I stand up. “This, gentlemen, is an demonstration of how bad your security is. It took Nina only…” I look at her. “Fifteen seconds.” I shake my head. “Only fifteen seconds to own your office. She now controls locks, and heating. Shall we ask her to open the locks and turn the heat down?”

The SmartHome techies mumble variations of “yeah”. I shake my head. “No. One of you has to stand up and politely ask Nina to do those thing. Alternatively you can take back control of your office in some way. But you have to do it from this board room. Remember, the doors are locked.”

One of the younger techies gets up, and walks to the doors, and attempts to open them. They stay locked. He pushes them with his shoulder, but the doors are solid, and don’t budge. He turns around, faces Nina, and bows deep, Japanese style. I’m not familiar with Japanese culture much, but I know Nina is. I make a mental note to ask her later if the guy is showing proper formal submission.

“Please, Miss Nina, if it pleases you, could you open the doors and turn down the heating to normal.”

Nina stands still, looking at the guy. She tilts her head to the right, and hums, but doesn’t make a move to do as asked. I speak, to make sure the SmartHome guys understand they’re being humiliated. “What’s the magic word?”

The guy looks puzzled for a moment, then speaks. “Please?” Nina lazily turns to her laptop, and taps a key. The door locks click-clack again. The big monitor also shows that she turned off the heating.

I look at the old guy. He’s still sitting in his chair, with his hands flat on the table. “Is there something you should say, sir?” He doesn’t seem to hear me, but before I have time to repeat myself, the young guy at the doors speaks. “Thank you, Miss Nina and Mrs. Carter.”

“I’m glad someone has been brought up right. But no, I mean isn’t there something you have forgotten, something you should ask Nina?”

The old guy is poked in his side by the colleague sitting next to him. They put their heads close to each other and whisper. The young guy saves them, again. He does another Japanese style bow. “Er, Miss Nina, could you tell us the new password, please? If it pleases you.”

Nina is clearly enjoying the situation. “Sure. I’ll save you the hassle of having to physically reset all the gadgets. The new password is ‘iabasaisfb’, which is short for ‘I am bad at security and I should feel bad’. All lower case.”

The SmartHomers being now properly cowed, I walk the through the rest of my presentation. It covers the same stuff I told Sam at the cafe, except dressed up with fonts and stock photos. We have a reasonable discussion, and they admit all their faults.

“Next up, I’ll explain what we can do for you.” I launch into a description of the platform we, The Team, have developed for IoT devices. “The platform requires a hardware platform supported by Linux and Debian, and gives you a secure updating mechanism, for both the operating system and your application, application runtime environments based on containers, and direct communication channels between devices that don’t require access to a central server in the cloud.”

The old guy has recovered, and in true techie style, after his ego isn’t bothering him anymore, dives straight into problem solving mode. “That’ll require us to rewrite all our code running in the gadgets, right?”

I nod. “Yes, it’ll require a lot of effort. I believe your management is willing to invest in that. It’s that or bankruptcy. Further, you can’t just do a straight port, all your software will need to be reviewed and possibly redesigned and rewritten from scratch. It’ll be difficult, but if we succeed, you’ll have a new product generation that is far ahead of your competitors. We, the team, will help you get through this, starting with adapting our software platform to you hardware platform, and helping you rethink the application layer.”

Back at the Team HQ, we have another meeting. Everyone’s present. “Welcome, everyone. It’s time to discuss SmartHome as a client again, and make a decision. Robin, you had objections last time. What do you think now?”

Robin smiles. “Oh, I’m still giggling at how Nina completely owned them. They totally soiled their clothing.”

Nina is also smiling, but staying quiet. I nod at them both. “Yeah, that went well. Nina, do you want to tell about that?”

“Nothing much to tell. We went in, and broke through their bad security, took control of their gadgets, and humiliated them.”

“Hah. Nina, you’re a bit laconic as a storyteller, aren’t you?”

Robin was laughing out loud. “She doesn’t tell it at all. They were scared of her, she could’ve had them stand on their heads. Of course, if we work with them, that may turn out to be a problem. I’m sure they hate our guts now.”

I shrug. “We had to get their attention and then have them focus on actually understanding how bad they are. We managed that, at least. Anyway, Robin, how do you feel working with them?”

“They’re still brogrammers, and I don’t think that will ever change. However, after today, they know we can humiliate them at will, and I’m willing to assume they’ll behave out of self-protection, if nothing else.”

“We can’t pull stunts like this again. Their fragile male egos won’t be able to take it, I fear. We’ll need to work constructively with them. And we need to deliver on our promises. But that’s OK. We’re The Team. We’re the bitches who keep promises.”

Robin nods, and looks around the table. “How about the rest of you? Yea or nay?”

Bertram, the junior developer, isn’t sure. “Looks to me like there’s mostly work here for porting our platform to their hardware. I’m mostly useful at the application level. Is there a role in this project for me?”

Robin takes over. “That’s an excellent point, Bert. Here’s how I think we divide this up. Nina sets up and maintains a lab with their hardware so we have something to work with. Andrew does most of the porting, with help from Bert and possibly others. It’ll be a good learning experience for Bert. Me and Nina help them redesign their applications to run on our platform, and review everything so it’s secure and sensible. Anna, you keep track of everything and make sure we have what we need to work smoothly, as usual. OK?”

Bertram still isn’t sure. “I’ve never done any porting work like this. I’m worried it’ll be too much for me.”

“I understand. However, the difficult bit is getting Linux to run on the devices, and that should already be done. The rest is our own stuff, and that should be straightforward. And if you get stuck, remember that you’re not alone.”

“Well, if you’re sure I won’t ruin everything, I guess I’m OK.”

I stand up to signal an end to the meeting. “This looks like a consensus. I’ll tell SmartHome we’re going to help them. Nina, I’ll ask Sam to provide us with some development hardware. What do we need?”

Nina shows up two hands with fingers spread out. “There’s four of us who’ll be developing, times two devices each, plus a couple spare. That’s ten devices. Don’t forget all power supplies, cables, and documentation.”

“Will do. Anything else?”

Nina continues. “I’m sure the cases they come with are as crap as usual. We’ll want to take out the guts and put them into more sensible cases, and add remote controlled power switches to those, and serial consoles. I want to put the re-cased devices in the kind of mini-rack we usually use for these kinds of things, and make sure we can control all of them remotely, so we don’t need to have developers sit next to the rack.”

The team nods. One of our secrets is that we spend some effort early in each project to make sure the developers can work as comfortably as possible. Nina’s mini-rack is a 10U movable rack, with computer-controlled power units, a serial port concentrator, and programmable network switch that lets us manage piles of embedded hardware much more easily than having them sit on developer desks. There’s a couple of wifi access points, also fully controlled remotely. Basically we can program everything so that the devices can be updated, reset, and generally put through their paces, without having to have a human push buttons, connect cables, or otherwise handle hardware. This becomes important when the project reaches a phase where we want to verify that the devices survive being forcefully rebooted by cutting power every few seconds for a week. Nobody wants to do that by hand. It’s a thing Nina built for a project a few years ago. She now improves it for pretty much for every new project. It’s not exactly cheap, but it saves a ton of manual work and also let’s us avoid a lot of bugs, which saves a ton of debugging work, and thus time. We have a reputation of delivering quality, and this is one of the ways in which we achieve it.

“OK, Nina, if there’s anything you need to buy, you know what to do.”

“Are we working from our office, or theirs? Should I ready the portaserver?”

The portaserver is another of Nina’s builds. It’s like the mini-rack, but has normal servers, which we use to run continuous integration services, version control, a wiki, an IRC server, and so on. We have one that powers our office infrastructure, and because it’s portable, when a project requires us to work somewhere else, we can bring it with us. This again saves us a ton of trouble. Instead of convincing customer IT to give us access to their servers, for example, we just bring our portaserver, connect it to power, and we’re ready to hack.

“Sam indicated we should work at the SmartHome office, but I’ll check that. For now, assume we will need to go there and prepare the Towel.” The Towel being the name of the office portaserver. It’s our third. The first one, “Moomin”, grew old enough to be replaced with a new generation of hardware. The second one, “Loki”, having suffered a minor accident involving a drop from the third floor, a tank out practising urban warfare, and a squad of very frightened conscripts. The third generation is rather more shockproof and has “don’t panic” written on each side in large, friendly letters.

Assembly

The next three weeks are overtly busy, but not actually productive. Robin spends a lot of time with the SmartHome developers to gain an understanding of what their gadgets actually do, so we can help them re-design things for our platform. Andy and Bert read everything about the hardware they can find, and set up a cross-building environment and start preparing a Linux kernel for the hardware. I iterate over contracts with Sam, and eventually get them signed by both parties. We agree that we’ll work mainly from our own office. However, Nina is still waiting for hardware, which means that Andy and Bert work blind.

We like our own office. It’s actually an apartment near the city centre, in a building from 1905, which we rent. There’s private rooms for everyone, except Andy and Bert, who prefer to share a room. What was meant to be a living room is the meeting room. The kitchen remains as a kitchen, and there’s even a small room we use as a server room. We’ve spent a fair bit of effort turning the apartment into a good office for us. There’s privacy for everyone, extremely comfortable sofas, good networking and electricity everywhere, good heating, a real bathroom (both shower and tub), basically all the comforts of a modern office, except it feels more like a home. We’ve put sound isolation everywhere, both external and internal walls, plus ceiling, so that it’s quiet. It was pretty quiet even before, since it’s an old building with quite thick stone walls. We can have an actual shouting match in the meeting room without disturbing the neighbours or those working in their own rooms.

I sit at my desk, and call Sam to ask what’s up. “Hey Sam, it’s Anna. We’re still waiting for the ten SmartHome hubs, and we must have them to really start development. It’s been several weeks, is there a problem?”

“Hi, Anna, let me check and call back to you.”

Fifteen minutes pass. My phone makes a noise, it’s Sam calling back. I answer. “We seem to have a problem. Some of our guys think one or two devices should be enough for you. We don’t have ten in the office.”

“Sorry, but it’s not your decision how many we need. If we have to share devices for development, that will create congestion, and block work that would otherwise progress smoothly.”

“I see. Very well. I’ll what see we can find.”

“Wait. I’m curious: these devices, can we use your normal mass produced SmartHome hubs for development? The ones you have manylots available for sale in your web store, and on Amazon?”

“Yeah, those would work. Unfortunately, due to tax and accounting reasons, we can’t just go get them from the warehouse. To start with, we’ve outsourced the sales and warehousing.”

“I understand. Let’s do this: we’ll order what we need, overnight delivery, and bill you for them as part of our expenses? That is a bit of a roundabout way to get the stuff, but it unblocks us and since this is a life-and-death project, we have to avoid being blocked.”

Sam is silent. “Uh, yeah, that would work. As you say, it’s quite roundabout.”

“Good. Can you send one of your techies to our office tomorrow to help Nina get them set up for development, get a serial console attached, and flash a new kernel that we’ve built, and so on? We have copies of the relevant documentation, but it always helps to have someone who’s done the thing before.”

The following day, Nick from SmartHome arrives early in the work day. Nina parks him in the kitchen, and shows him how to use the coffee machine, while they wait for the devices to arrive by courier.

The courier arrives by noon. Nina signs for the delivery, and carries the boxes to her lab, a large room with plenty of shelves and desks so there’s room for spreading hardware around. It is her sanctum, the rest of us aren’t supposed to enter without asking for permission.

The lab is filled with furniture and bits and pieces of electronics. The walls are all covered by bookcases, wooden Lundia shelves, cupboards, chests of drawers, and other storage. Part of one wall is covered by a peg board with hooks for tools. There are a lot of tools hung on the board: every conceivable sort of screwdriver, hammer, pliers, knife, even an axe and, most curiously of all, a half-meter long rubber baton, and a huge sledgehammer. Near the door are several large garbage bins, labelled for recycling: WEEE, metal, toxic, and misc.

In addition to a very large, sturdy table in the middle of the room, similar to an island table in a kitchen, there is a lab bench along one wall, with an oscilloscope, soldering irons, a large magnifier, and other tools for electronics. There are three bar stools around the island table, and at the lab bench.

The room is well lit, and both the lab bench and the island table have large lamps hanging over them from the ceiling.

Nick does not know he’s entering a special place. He follows Nina into the room, and promptly collides with a table, causing a spare desktop machine fall to the floor. There is a terrible noise, and parts fly across the floor to all corners of the room.

“You! Sit!” Nina points her finger at Nick, and uses her loud voice. Nick is startled, but luckily doesn’t cause any more havoc. He looks around for a chair.

“Sit! Now! NOW! On the floor!” Nick drops to the floor, with his buttocks first, as if he were a well-trained dog. He looks startled and confused at his reaction.

“Look, Nick. This is my lab. I need your help, and that’s why you’re allowed in here, but you’re not allowed to move, or touch anything, and if you break anything else, I’ll throw you out. Do you understand?”

“I’m sorry, I’m just clumsy. I hope I didn’t break anything important?” Nick has dropped his shoulders, and speaks in a soft, calm voice. He resembles nothing as much as a dog caught doing something bad. If he was wagging a tail and pleading for mercy using his big, glistening brown puppy eyes, nobody would be surprised.

“Nah, it was just a spare PC I was going to re-purpose as an extra backup server. Don’t worry about it.”

Nina takes one SmartHome cardboard box, puts it in the middle of the big table, and stacks the rest on an empty shelf on the wall. Carefully, with slow hand movements, she unpacks the gadget from the box, then takes her phone and takes a photograph of all the contents.

“All right, I have a hub. I guess I need to open it to gain access to the serial port, right?”

“Yes, Miss Nina.”

Nina frowns at Nick. “Why are you calling me Miss Nina? Are you being sarcastic?”

“No, Miss Nina. I don’t want to anger you any further.”

“Good boy. But just Nina is enough.” Nick nods.

“To open the case, I need to open these four screws” - Nina points at them - “And then use a bit of force to get the cover apart, right?”

“Yes, Nina. Would you like me to do it for you?”

“No, thanks, I need to learn how to do this.” Nina goes to the wall, where a ton of tools are hanging, and chooses an electric screwdriver, and returns to the table. Deftly, she opens the four screws. She then goes back to the walls, returns the screwdriver to its place, and takes a small crowbar. She inserts the end of the crowbar between the halves of the case, and wrenches it open with a sudden, fast movement resulting in a crunch.

Nick is surprised, again, but stays put. “Oh.”

Nina smiles a small, tight smile, and starts picking out the various bits of electronics from inside the remains of the case she’s ruined. “This is the mainboard, I assume the header with the pins for the console serial port are here. Is that also how we flash a new kernel?”

“Yes, that’s right.”

Nina turns on the lamp hanging from the ceiling over the desk. The desk, and the room, is bathed in a bright, cold white light. She bows down and looks at the now-exposed mainboard of the opened hub. She raises her glasses and puts them on top of her head, picks up the mainboard, and squints at it quite closely. After a moment, she shakes her head and fetches a magnifier from a drawer.

“I should have suitable connector, somewhere, let me see.” She goes to rummage in a cupboard. She pulls out a cable that’s clearly handmade. “This should do.” She plugs the cable to the mainboard, pulls out a laptop from under a heap of stuff on another table, and plugs the other end of the cable to the laptop. She connects power to the mainboard, and soon the laptop screen starts showing a stream of text.

“Hmm. Okay, that boots with the factory kernel. Now, let’s see if I can flash the kernel that Andy and Bert have built. It’s the same version of the kernel, and build from the same source code version you use, it should work.”

Several minutes pass, as Nina uploads the new kernel to the device over a 115200 bit/s serial connection, and then writes it to the internal flash storage in the device. Nick gets bored and offer to fetch them both coffee. “No liquids in the lab.” is Nina’s curt answer.

“May I go have coffee in the kitchen?”

“Sure, that’s fine.”

Nick gets up from the floor, and goes to the kitchen. Robin is there, sipping a cup of tea. “If you’d like tea, there’s plenty left in the pot, milk’s in the fridge.”

“Thank you. I’ll sit here. Nina says I can’t bring liquids into the lab.”

“The lab? Nina let you into the lab?”

“Er, yeah? Why do you ask? She went in and I followed. And then I was clumsy and a computer fell on the floor and broke.”

“Oh dear. I should’ve told you that the lab is Nina’s special place. She’s spent months setting it up, and it’s where she spends almost all of her time. The rest of us do not enter without an explicit invitation each time. She doesn’t usually tolerate other people there, lest they make a mess there. If she didn’t shout at you, she must like you.”

“Well, she did shout at me to sit on the floor after I was clumsy.”

“That’s understandable. You did break a computer. Not to worry, she’ll be able to fix it, and if it was something expensive, we’ll bill your company for it. Hah.”

“Oh. Okay, I guess.”

Nick sits for a while, finishing his cup of tea. “Thank you for the tea. I will go back to help Nina now.”

Robin nods. Nick gets up, washes his cup under the tap, and puts it in the dishwasher. Just as he’s about to open the kitchen door, Robin speaks up.

“Oh, boy, just to be clear, when I said Nina must like you, I didn’t mean romantically. I don’t want there to be any misunderstanding.”

Nick gets to the lab door, which is standing open. He politely knocks on the door frame. “Nina, may I enter?”

Nina looks up from the laptop, and nods. “Pull up that chair and get seated next to me so you can see the laptop. Actually, let me move the monitor here.” Nina gets up, goes to the lab desk, and unplugs the 24" monitor sitting on one end. She carries the monitor to the island desk, and plugs in the end of a display cable. “There, that’ll make it easier for both of us to see what’s happening.”

Nick picks up a bar stool on the other side of the island table, and carries it near Nina’s stool, and sits down.

“So, I tried to flash another kernel onto the board, but it seems to not boot correctly. Let me show you. See if you can spot anything strange.”

Nina presses a button the power supply for the board, and the monitor has quickly streaming text again. Soon, the stream stops for about thirty seconds, and then a final screenful splurges.

Nina points at the final splurge, and reads aloud. “Oops. Kernel panic. Unable to handle kernel NULL pointer dereference. Does that location look familiar to you?”

“I’m not sure. Which kernel image is this?”

“It’s an image that Andy and Bert built from the SmartHome source code dump, using the included instructions. They say it boots up fine on another board, and in Qemu, but obviously we haven’t been able to test it on real hardware until now.”

“If it boots on other hardware, my guess would be something specific to our hardware. Perhaps a device driver?”

“Perhaps. I better go get Andy to look at this. He’ll be so thrilled.”

The next morning I have tea with Nina and Andy in the kitchen. We don’t have regular stand up-meetings in person, but I try to talk to everyone at least a few times every week. What we do have is a kind of written stand ups, where everyone writes up what they’ve done each day in the internal blog, and Nina and Andy had written about the kernel booting problems. I’d pinged them on IRC so I could discuss this more efficiently in person. I made a pot of tea, Lapsang Souchong, since I like the smokey flavor.

“I understand the SmartHome devices arrived yesterday. Is everything working now?”

Nina shakes her head, while holding her tea mug between her hands, as if to warm them . “No, not at all. We haven’t got a working build of the kernel yet.”

“Oh? Andy?”

Andy looks like he’d be vexed, if he wasn’t his usual perpetually calm self. “Yeah. We’ve set up a cross-building environment, but the kernel image we built doesn’t boot correctly. We spent some time debugging that yesterday with Nick from SmartHome, but he wasn’t all that much help. I don’t think he does this kind of thing usually.”

“I see. Do we know what the problem is?”

“Not yet. It looks like the normal embedded Linux vendor inability to provide complete and corresponding source code for their kernel. Getting their kernel to build, install, and run shouldn’t be hard, but it always is.”

“I agree. What can we do to solve it this time?”

“I’ll get one of the SmartHome boards from Nina, and let her keep the rest. She can continue to build a mini-rack, but Bert and I can use the one to debug. That way we’re not waiting on Nina, and she’s not waiting on us. If Bert and I are still stuck in the afternoon, I think you should call SmartHome and arrange for a couple of their best kernel engineers to come help us.”

I nod. We’ve learnt, as a team, that it’s important to ask for help if you’re stuck, while it’s also important to not ask for help until you’ve given the problem a good try yourself. “I’ll call Sam after lunch, unless you tell me it’s all working.”

“Nina, does that sound OK to you? And are you doing OK with the mini-rack build?”

Nina takes a gulp of tea, and nods. “Yeah, it’s going well. I’ve unpacked all the devices, and extracted the boards from the cases. That’s great crunchy fun. The cases are now waste, but we don’t need them anyway. I’ll need to go pick up some hardware bits for the rack so that we can install all the boards, but that’s no problem.”

We all have company credit cards, but especially Nina. She often needs to go buy computer parts, and given that we do not usually use off-the-shelf computers, they’re often esoteric parts. Luckily, she knows where to find anything we need.

Nina departs, taking the keys for the company van from the key safe. Andy withdraws to the room he shares with Bert, so they can together unlock the mysteries of the kernel that wouldn’t boot. I’m not worried about that. We’ve had this situation before, where an embedded Linux vendor doesn’t share the actual kernel source code they use, or are missing some build step from their documentation, or does something else stupid. We know it’s possible to get Linux booting, and we have access to the people who made it happen. I’m not worried, but I am irritated that this particular problem keeps coming up over and over again.

I take me time to finish my cup of tea. When I’m done, I put the cup in the dishwasher. Like all of us, I avoid liquids at my desk, even if Nina’s lab is the only place where liquids are explicitly forbidden.

In the afternoon Andy comes to my room, and tells me they’re still stuck with the kernel. I call Sam.

“Hi, Sam, it’s Anna. We’re having some trouble building and booting the Linux kernel. Could we have one or two of your kernel engineer visit out office?”

“Hi, Anna. Of course. Is it urgent? Do you need them today, or is tomorrow morning OK?”

“Tomorrow morning at nine would be perfectly fine.” I look at Andy with my eyebrows lifted, for confirmation, and he nods. “Can you ask them to use the door phone, and call Andy if there’s any problem getting in?”

“Sure thing.”

Nina returns from a shopping trip, with large cardboard boxes and an army surplus 100-liter duffel bag filled with things. She carries them into her lab, and closes the door. She’s rigged up an “ON AIR” sign outside the lab door, which she got from a radio station. We’ve never asked her how.

The following morning two SmartHome kernel engineers push the button on the door phone at exactly nine o’clock. Andy lets them in, and they join Bert in his and Andy’s room. I arrive soon after, and see from IRC that Andy has requested them to be left alone, so I don’t go and introduce myself and tell them they’re welcome.

Three hours later, they exit the Andy and Bert room, and shake hands and say goodbye. They’re gone before I get out of my room. “Good morning, Andy and Bert. I guess those were the SmartHome kernel engineers leaving? How are things?”

“Very good. We have a booting kernel now, and we know what changes SmartHome has made to the stock Linux version. It should be plain sailing from here.”

Bert stands silent, but restless. It’s a clear sign that he disagrees with something, but isn’t sure he should say anything. “Bert, what’s up?”

“They’re horrible. Their kernel changes are horrible! Utterly despicable! And we’re going to have to use their code, since we can’t get the specs to write the necessary drivers ourselves.”

“How much of a problem is that going to be?”

“Who knows! It’s crap code, it may blow up in our faces at any time. They have busy-waits and arbitrary sleeps all over the place. It’s no wonder they don’t upstream the code. Upstream kernel maintainers would laugh in their faces. Linus would definitively be sarcastic at them.”

To upstream changes means to send your changes to the person or project who maintains the code, and talk them into including the changes in their code. It can be a lot of work, and it opens you up for criticism, but the benefit is much less maintenance work for you in the long run. Up-streaming is considered to be the mark of a full participant of open source, and something a lot of companies fail to do.

“I see. Andy, do you agree?”

“The code is not great, but it’s not the worst embedded kernel code I’ve seen, in or out of Linux. I think we’ll manage. It might be good to be prepared, though, and try to get documentation for the SoC they use. Just so that we can debug and improve things if things do blow up in our faces.”

An SoC is a system on a chip, meaning it’s basically a single computer chip that contains all the usual parts of a computer, except interfaces for communicating with the outside world. Most embedded systems are built around an SoC, and there’s a number of big companies developing their own SoC chips, and the SoCs are all different, and for reasons nobody else understands, the SoC vendors are reluctant to publish all the documentation to program them. Lack of documentation makes it difficult to write reliable software for them, and that in turn makes is less attractive to choose their SoC for products. One may liken this to wearing shoes made out of dynamite, but the vendors seem supremely confident in being able to grow new legs on demand.

“Yes, I agree, that’s a good idea. I assume you asked those kernel engineers for them?”

“Yeah, but they have them under NDA, and can’t share them with us.”

“Typical hardware vendor BS, in other words. It’s probably no use asking Sam, either. Can you email the particular, make and model number of the SoC, and I’ll send out some feelers? Oh, and please email Nina where she can find the working kernel, and work with her to setup a continuous integration job to build it?”

“Of course.”

I go to my room to compose a thank-you email to Sam, for the help his kernel engineers gave us. I don’t mention the code quality issue, or the lack of SoC documentation. There’s no point in ruffling feathers at this point. I know people around the industry, and I may be able to get someone to leak me a copy of the SoC documentation.

That’s a little unethical, of course. I will first, however, contact the SoC vendor directly and see if they’ll give me a copy of the documentation for a promise that we’ll take care of up-streaming any necessary kernel changes. We’re likely to have some time after the SmartHome project, and the up-streaming would keep Andy and Bert productively busy during the lull.

We do not see much of Nina for the next two days. She’s there, when the rest of us arrive in the morning, and still there, when everyone else leaves. We only see her when she comes to the kitchen to drink or eat, and though she seems happy, we do not engage her in conversation. If she needs help, she’ll tell us, but otherwise she’s clearly deep in her work, and gets quite terse if she has to talk about anything.

All of us are allowed to be as eccentric as we want, as long as we do not harm the others.

When Nina finally emerges from the lab, it’s early afternoon. She opens the lab door, and turns off the “ON AIR” sign. She looks satisfied, but tired. Via IRC, she announces that the mini-rack with SmartHome devices is ready, and that she’d be happy to give a demonstration and tutorial after she’s had lunch. She goes out, and returns after fifteen minutes with take-out Indian food, and takes the food to the kitchen. She takes a carton of milk from the fridge, and sits down at the kitchen table to feast.

Nina doesn’t usually care much what food she eats, but when she finishes a build or other project, she celebrates with her favorite food. It’s always the same Vindaloo, from the same takeout restaurant, and with a liter of cold milk to calm her taste buds. Some years ago, the restaurant she had been using went out of business, and Nina spent a week to find a new favoured restaurant, eating Vindaloo three times a day, until she found one she liked. It was a very aromatic week for the rest of us.

The whole team is gathered in the corridor for the demonstration. Nina comes from the kitchen and ushers us into the lab itself, and tells us to take position on one side of the island table. She goes to the other side, and starts. A luggage trunk is on her side of the table, made out of hard, black plastic. The trunk has handles on all sides for carrying, and opens along a vertical piano hinge along one side. Inside is 10U of server rack.

Nina has a pointing stick in her hand.

“Welcome. This is is the SmartHome development trunk. It is similar to what we’ve used in previous projects.” The stick strikes the side of the trunk. “It has nine boards from SmartHome hubs, plus a controller, which gets the serial console from each hub, plus Ethernet and power to each hub, which are both programmatically controlled.” The stick touches the various parts of the rack.

“The controller also has a wifi access point to which the hubs connect. All of us have ssh access to the controller, and can manage each of the hubs. We’ll co-ordinate manually over IRC, as before, to decide who uses what at any time. To simplify things, I’ve named the hubs nina-01, andy-01, and so on. We each have a dedicated hub, for now, plus CI has three of its own. That leaves only one spare, but we can add more if needed.”

Nina pauses to take a breath.

“Our normal development rack now has a continuous integration system set up, which uses the three hubs to run tests on. The tests are currently very simple: install a newly built kernel, and reboot, and verify that root can log in via the serial port within 60 seconds. We’ll expand on that as we start development. In addition, the rack has SmartHome lighting gadgets, with a light bulb each. Each hub has its own light bulb. The light bulbs are inside the trunk, and there’s a webcam so you can watch them remotely. Questions?”

The four of us are standing quite for a moment, until Andy speaks. “Nina, you’ll have to excuse our silence. We’re used to you being excellent, but you’ve outdone yourself. This is a great setup, and it’ll help the rest of us work faster.”

I have a question. “What shall we call this trunk?” Nina smiles a wicked smile. “How about the torture chamber? It’s where we put the SmartHome stuff to the test.”

There is a murmur of approval, and much nodding. Nina looks satisfied. She goes to her laptop, opens up Inkscape, and quickly makes a drawing with the words “SmartHome Torture Chamber” laid out nicely and using a the Comic Sans font. She punches a key combination, and the printer in a corner of the lab spits out a few sheets. Nina gets the sheets, which turn out to be A4 size labels, with the Inkscape design now printed on them. She peels off the labels and attaches them to four sides and the top of the trunk.

“OK then, there’s documentation in the internal wiki, and if your question’s not answered by that, ask on IRC, though I’ll be at home sleeping for the next 24 hours or so. Now, who’d like to carry this to the server cabinet?”

We have a few servers we run in the office. Cloud computing is all very well, but it requires good Internet connectivity to use it for development, and when we need to work from customer premises, that doesn’t always exist. We keep the servers in a small room that may have been a child’s or servant’s bedroom in prehistoric times. Andy and Bert, our two strongest members with the least back problems, carry the SmartHome trunk there. They place it next to our development infrastructure trunk, and connect power and Ethernet.

The development infrastructure trunk is outwardly similar to the SmartHome one that Nina has built, but the contents are quite different. The rack contains several 1U servers, on which we can run quite computationally intensive tasks, such as compilation, automated tests, and continuous integration. There’s also plenty of storage. We have a git server in there, plus space for backups of each of our work laptops. This is important so that if we’re stuck on a client site with bad connectivity, we can have everything we need locally in our trunk. There’s even local copies of Wikipedia, Stack Overflow, and the Debian package archive.

As much as possible, anything we may need while at the customer site, we try to have a local copy of. The trunk also contains a 4G modem, plus a router, so that we can, if necessary, use that for Internet access.

When we do go to work on-site at a customer, we bring the development infrastructure trunk with us, take over a meeting room, and set it up there. It needs power, plus optionally an Ethernet connection, and we’re ready to start work.

The trunks were originally Nina’s idea. Before that, we tried to have much of the same functionality and data on laptops, plus USB drives, but it was always quite cumbersome. The trunks work much better, especially after the first couple of iterations of the design.

After the demo, when Nina has gotten the new trunk installed and connected it up in the server room, I quietly ask her to step into my office.

“Good work with the torture chamber, Nina. I guess you worked around the clock for two days, is that right?”

“Yeah, Anna, that’s right. I went a little overboard. But don’t worry, I’m going to go home and rest and recover next.”

“Good, that’s what I want to hear. While we don’t track work hours here, we don’t ever want to see someone burn out. Me and Robin have both done that at least a couple of times each, and we won’t let it happen to anyone in the Team.”

“Understood.”

“So I don’t want to see you working at all before Monday, OK?”

“Yeah. I’m going home, I’ll have some food, and sleep and binge on the new season of Agent Carter. See you on Monday!”

Nina gets up and walks to the door. “Wait! What did you think of the young man from SmartHome, Nick?” Nina turns around. “He’s OK, I guess. A bit clumsy, maybe a bit inexperienced, but at least he seems to not have a big ego that ruins everything. I can work with him again.”

I’m surprised. That’s the most positive appraisal I’ve ever heard Nina give of someone outside the Team. “Good to hear. Bye now.”

Next day in the afternoon I walk to Andy’s and Bert’s room.

“Hi guys, how is it going?”

Andy looks up and takes his hands off the keyboard. “All good now. We’ve gotten the torture chamber to build and install a kernel from our own git repository to a test board, and run some tests against that board. All going well, now we just need to finish adding the rest of the board support, missing drivers, etc.”

“So it’s plain sailing now?”

“Yep, until we hit the first unanticipated and unforeseeable snag. You know, the submerged trap that universe always likes to throw at us.”

“Yeah, those. Can’t help them, just have to allow for some of them in the schedule.”

“If we don’t hit on too many snags, I’m sure we’ll have a working kernel end of next week, and after that we’ll start porting our platform to the SmartHome board.”

“Excellent. Tell me at once if you hit a snag, OK?”

“Will do.”

Andy turns back to his laptop, and lifts his hands on the keyboard, even though he doesn’t start to type yet. I know what he’s doing. I interrupted his concentration when I came in and interrupted the two, and now they need to get back all the details of what they were working into their short-term memory. “Enter the flow” or “go into hack mode” as we call it. Technically, I should’ve asked, on IRC, Andy and Bert to come visit my office, when they’re next taking a break from concentration anyway. I did wrong.

I go out, closing the door quietly behind me. I go to the kitchen and put in a five euro note into the jar marked “unwarranted hack mode interruptions”. It’s a large glass jar, almost half-full with five euro notes. When it’s full, we’ll take out the money and have an office party.

When I get back to my own desk, and check my email inbox, there’s a mail from Sam. He’s used the subject line “Is RPM a possibility?” and he wants to know if we could support RPM packaging for their code, instead of Debian packaging. He says their guys are familiar and comfortable with RPM and say it is more secure, because packages can be digitally signed, unlike packages in the Debian format.

This is a snag. This is the client having ideas of things beyond their understanding. It usually happens in every project. While they do not mean ill, the end result is still that if we accommodate them, it’s not just shooting our collective foot with a shotgun, it’s surgically amputating both feet, while running, and putting in prosthesis made out of dynamite, with the fuses lit.

The problem isn’t that the client has ideas and opinions and requests and suggestions. The problem is that the client doesn’t know what they’re talking about, and doesn’t even suspect that they don’t know.

This particular type of snag needs to be stopped early and thoroughly. It will need to be handled with careful diplomacy so that they walk away from the confrontation feeling good about themselves. It’d be easy to just show how utterly wrong they are and drag their self-esteem through a pile of dung and dance a fandango on their ego with high heels until they weep, but that would just make it harder to finish the project together. Every client project needs the client involved and eager to help if it is to succeed. Also, they need to think they have all the control, even if they can’t be allowed to have any control. A project actually controlled by the client is doomed. They should have a little influence, but their control should be limited to a fairly loose setting of scope and constraint.

I’m going to have to deal with this, but it’s getting late, and I’m tired. Diplomacy requires a lot of energy and time. I send a quick reply to Sam, so he doesn’t worry if my response takes a while, but I don’t say anything except that I’ll respond properly tomorrow. I tell everyone I’m leaving for the day on the company IRC channel, shut down my laptop, tidy up my desk, and go home.

I too want to see the new season of Agent Carter. Maybe with some take-out food, curled up under a blanket on my couch, with my cat purring in my lap, or on my shoulder.

Antagonism

I sleep well, and I get up a bit later than usual, feeling very refreshed. I spend a bit of time in my own kitchen, drinking tea and reading the news. I used to love reading the paper on paper in the morning. I no longer get the paper on paper, since it creates incredible mountains of waste at home. Instead, I have a tablet computer in my kitchen on which I read my favourite online news sites. The tablet is intentionally not configured to have access to IRC, email, Twitter, or other social media accounts. Reading social media in the morning isn’t relaxing, so I do that at work instead.

I get to the office ready to tackle SmartHome’s RPM fetish. I log into my work computer, and send Robin a private message on IRC. “Hey, Robin, do you have a quarter of an hour to help me sketch a response to shoot down a request from SmartHome to switch to RPM? If you’re in the middle of something, finish that, I can start on my own.”

In a minute, I hear Robin’s combat boots stomping towards my office. She throws open my door, not bothering to knock. Oh good, I’ve upset her. Robin steps into my office and stands in front of my desk. In addition to the boots, she’s wearing cargo trousers, and a photographer’s multi-pocketed vest over a thin, green, army sweater and a uniform dress shirt. It’s one of her favourite outfits, on days when she doesn’t expect to have to deal with customers in person.

“What is going on? RPM packages? Who’s having a painful brain fart?”

Robin is a dear friend, but it’s taken me a lot of effort to get used to her habit of not bothering with social niceties when she’s upset. I know she’s not upset at me, which helps, but the loud voice, and the wording easily puts the others on the defensive. While I’ve gotten used to it, we’ve also made sure Robin avoids this behaviour in front of others, including the Team. Originally she said she felt like a fraud when she hid her true feelings, but I convinced her that it’s OK.

“Robin, you’re more upset than this deserves. Please take three deep breaths, and sit down.” Three deep breaths works, it causes a physiological reaction that calms one down, and we’ve done this enough times that it’s also a psychological trigger for Robin. Robin breathes, sits down, and says, in a normal voice, “OK, so what’s going on?”

I explain about Sam’s email from yesterday. “Clearly, we’re not switching to RPM. We’ve built our system based on .deb packages, but we need to explain to SmartHome why we’re not switching. I thought we’d outline a response together, and I’ll flesh it out and reply by email. Here’s what I have in mind so far.”

I stand up and walk to my whiteboard. Whiteboards are an essential tool for our work, so we all have them in our rooms.

“First, we’ll point out that RPM and .deb are functionally pretty much equivalent, right? RPM can do per-package digital signatures, but .deb gets the same benefit from APT repository signing. And so on. Are we agreed?”

“Of course. We’ve told other customers the same thing. I’m now thinking we should write a small white paper on why we use .deb and why we’re not switching, so we’re prepared for this the next time someone asks.”

I nod. “Good idea, I’ll put it on the list of things to do between clients. Or better yet, since we need it for SmartHome, we’ll write it for them, and bill the hours to them. The contract says we can reuse that kind of thing in the future.”

Robin also nods, and shifts to a more comfortable position in the chair.

“Next, I’m not going to go deep into the detailed differences between the two packaging formats, since they don’t really matter. I think the other big point is the cost in time and quality of switching. It’s not just about the format of individual packages, we’ve built our platform entirely on top of Debian, and switching to RPM would mean we’d need to switch to something like RHEL. And then everything changes, since the systems are quite different, for all they’re built mostly from the same upstream components. Things like system wide policies differ, and figuring all of those out is many months of work. Agreed?”

Robin nods again. “Agreed. Can we sell SmartHome some training on how to make .deb packages?”

I smile. Robin’s past her anger now. “That’s a good idea. I’ll suggest that to Sam, in case their developers are hesitant about .deb packages. Who should give the training, you?”

“I think I’m going to be busy enough. Would Nina be OK?”

“I think so. I’ll check with her. We’re agreed then.”

Robin stands up and leaves, I sit in my chair and flex my fingers over the keyboard, and hit on “reply” for Sam’s mail.

“Dear Sam, we had a little discussion with Robin about switching to RPM and I’m afraid it’s something we advise strongly against. Let me explain why…”

The following morning, Nick comes to visit. He uses the doorbell, and I happen to be closest to the door so I open it. He stands there with his hat in his hands, looking as nervous as a teenager picking up a date from their home for the first time.

“Hi, Nick, how can I help you?”

“Hi, Anna, I’m here to see Nina. Is she in?”

“Why yes, I believe she is. Come in and we’ll see together.”

I’m intensely curious. Nina has basically never had a visitor before, and Nick seems much more nervous than a professional visit would warrant. What’s going on?

We walk together to Nina’s lab, and knock on the door. In a moment, Nina opens it. She sees Nick.

“Hi, Nick, I’m glad you came, Thanks, Anna, I invited Nick to talk over a few things with him.”

“OK, I’ll leave you two to get on with it, then.” I nod at Nick, and walk to my own room. An hour or so later, I need to go see Robin about something, and I choose the route past Nina’s lab. The door is open and I can hear Nina explain about the trunks. She’s not trying to sell them, just proudly presenting them, geek-to-geek, going them over in very technical detail. I don’t stop, not wanting to disturb the two, and continue to Robin’s room.

“Hi, Robin, did you know Nick is here visiting Nina? They’re talking in her lab?”

Robin grins. “Anna, you old matchmaker. What did you do?”

“Nothing! It wasn’t me and you can’t prove otherwise. This took me completely by surprise.”

Robin is still grinning. I can tell that she thinks I’m trying to get the two young ones to become interested in each other. Not without justification, as I’ve done something similar before, though never in a professional context. And not this time.

“So what are they talking about?”

“She’s telling him about trunks, and he seems interested.”

“Hah. A geek date, maybe?”

“We’ll see. Anyway, I wanted to ask you about the SmartHome situation.”

We discuss for a few minutes, and then I walk back to my office, carefully avoiding Nina’s lab. I sit down and process emails for a while, until someone knocks at my door. It’s Nina.

“Hi, Anna, I’m going out for lunch with Nick. I’ll be back in a couple of hours.”

“Sure, Nina, go ahead.” I hesitate a moment. “Please excuse an old lady, but what’s going on?”

Nina smiles her crooked smile. She can read me and knows I am curious if there’s something going on between her and Nick. “Oh, nothing, I just felt the, er, urge to spend some time with Nick. He’s a smart guy, under the surface.”

I smile back at Nina. Her answer has told me nothing useful. “Go on then. See you later.”

Robin has called together a workshop to discuss porting our framework onto SmartHome’s hardware platform. It’s half a day, with her, Andy, and Bert. I tag along to get a feeling of the situation. Turns out the three have already figured out a battle plan, based on an initial spike and previous porting for earlier clients.

Robin stands up in in front of the whiteboard, and goes into full-on lecturer mode. “OK, our kernel porting has gone well, we have a booting kernel, and a CI that can build and install a kernel from our git server, and test that the kernel boots and interacts with the outside world. The hardware is similar to most of the embedded ARM devices we’ve worked with before, even if it’s a new SoC. There’s a 3G modem for communication.”

Bert lifts his hand. He’s still young enough to remember when he was in school. “Is the hardware supported by Debian?”

“Not yet, but apart from the kernel it should be only a few packages we need to tweak, to get a core Debian system running on the box. After that, it should be plain sailing. We’ll create an image using debootstrap and our own wrapper, flash the device with the new image, and boot into a real Debian system, albeit with a custom kernel. The usual thing, in other words.”

I stand up. “Looks like you have things well in hand. I’m old enough to have learnt that the universe likes to throw nasty surprises even in the simplest things, so I’m going to assume it’ll take a while before we actually have Debian running on the SmartHome hardware. That’s OK, but please do the work in tight weekly iterations so we can demonstrate progress often to the client. And ourselves.”

“Will do.” Robin’s also been doing this work a long time and knows things will always be more difficult than one foresees. “And we’ll prepare patches to send to Debian for everything that’s generally useful, I assume.”

“Yep, that’s the way. The less we have to keep maintaining ourselves, the better. Also, if others can benefit from our changes, it’s the Right Thing to share them.”

Robin and Andy are at the SmartHome office, in the meeting room already well-known to us. With the Team’s IoT platform porting to the client hardware platform underway, it’s time to present a plan to the client for how to re-architect and re-implement their applications.

Robin has her laptop connected to the projector, and stands at the end of the big, oval meeting table. She’s wearing dark blue trousers, a white shirt with a tie, and a dark-coloured vest. This is a business meeting with a client, so she’s skipped her usual comfy, army-surplus chic. Andy is likewise dressed in a suit, though without a tie.

The SmartHome engineers are slowly dripping into the room, in ones and twos. They are talking with each other, about other things they’re in the middle of in their own jobs. Among the final ones, a couple of 20-somethings, dressed in loud Hawaii shirts and ripped jeans, enter the room, stop, and look at Robin.

One of them pokes the other in the arm, and speaks, not loudly, but loud enough to be heard over the quiet discussion of the others. “See, I told you she’s lesbian. Look at her outfit.”

The room goes quiet. Most of the engineers squirm in their chairs and look uncomfortable. Robin looks up, stands up, puts her arms behind her back, and stares at the two who came in. “What’s your name?”

“Er, I’m Anders.” The guy seems to realize he’s crossed a line.

Right at that moment Sam walks in. Robin looks at him. “Hi Sam, we have problem. Anders here thought it would be funny to make comments about my sexual orientation, and the whole room heard it. Please handle it.”

Sam looks at Robin, then at Anders. “Anders, you idiot, what did you do?”

Anders looks surprised. “I merely said she looks lesbian. You know, woman in a suit and tie and so on. Also, she’s always so aggressive, telling us what to do.” Robin keeps her face as stony as she can, but it’s clear she’s fuming.

Sam shakes his head. “I’m afraid I’m going to have to ask you to leave the meeting. I’ll talk with you afterwards. Our contract with the Team is clear, your behaviour is unacceptable when we work with them.”

Andy is calm. Andy is always calm. Andy calmly does not take crap. “It’s not just against the contract. It’s wrong. It’s not how professionals treat people.”

This doesn’t make Anders any calmer. “Come on Sam, look at her! No woman would wear that unless she’s a lesbian. And if she is, what’s the harm in saying it? Don’t I have any freedom of speech here anymore? And all you others, you’re with me, right? Are we going to let an uppity woman treat us like this?”

The others are clearly not willing to stick their necks out to help poor Anders. Robin is still fuming.

“Boy, listen very carefully. My persona, sexual orientation, or anything else outside the work I’m supposed to do here for your employer are completely outside the scope of allowed conversation for you. Even a junior should understand that.”

Anders turns around to face Robin. “Oh yeah? Says who?”

Robin smiles a little, a tight smile that bends her mouth only a little, and does not reach her eyes. Her voice is steady, slow, and cold. “The contract your employer signed with us, to start with. Basic politeness to end with. The contract says that your employer is responsible for making sure all their employees behave professionally when working with us, and if lapses in professionalism aren’t dealt with in a reasonable way, we can walk away and leave the project. But SmartHome will pay our fee anyway.”

Robin takes a breath, and frowns a little. “Would you like me to insist that Sam fires you? Would that be a reasonable way of dealing with this?”

Sam takes Anders by the arm and pulls him towards the door. “Anders, you shut up now, and wait at your desk. You’re in trouble now.” Anders starts saying something. “No, shut up, I’ll talk to you later.”

Anders leaves the room. He’s talking loudly to himself, clearly now very angry. He can be heard in the meeting room, until Sam closes the door.

“Robin, I apologise for that. I clearly haven’t made it clear to all of us inside SmartHome what we expect from them in this project. Do you want to continue your presentation? Or is it better if we reschedule until later in the week?”

Robin is quiet for a while, and looks at Andy. “I think we’ll continue with the presentation. But first, I’d like to say that I don’t require anything more than basic professional courtesy from those I work with. I’m sorry for what happened today. It’s relatively mild compared to some of the things I’ve encountered in my career, but I’m not willing to endure any disrespect anymore. I hope the rest of you can understand that, and that we can work together.”

The engineers still look a little uneasy, but the general atmosphere eases up a bit. Robin presses a button on her laptop, and the first slide of her slideshow shows up on the projector screen. It’s a cute kitten.

Back at the Team office, Robin and Andy come straight to my office. I can see Robin’s upset.

“What’s wrong?”

“There was a confrontation at SmartHome. Andy, perhaps you should tell the story, I might get upset all over again.”

Andy briefly tells what’s happened. Although the presentation went well, in the end, and nothing further was said of the situation with Anders, it’s clearly going to be a problem in the near future.

“I see. Robin, I’m sorry, you were right to be hesitant about taking on SmartHome as a client.”

Robin shakes her head. “It can’t be helped now. And for the record, I don’t like how things went down today. Not sure Sam handled it properly.”

Andy stands up, and puts his hands in his trouser pockets. “I feel I must say something, and that is that Robin didn’t do anything wrong. The guy was way out of line, and it was right to ask his boss to handle the situation. Sam should’ve taken Anders out of the room, and tell him to sit out of the meeting.”

I nod, and look Robin right in the eyes. “Andy’s right, you didn’t do anything wrong. It was Sam’s job to handle the situation. He handled it badly, that’s not our fault. That said, and please don’t take this as any kind of attack or complaint against yourself, I wish it would’ve been possible to handle this entirely privately. It might have resulted in less confrontation.”

After an impressive grimace, Robin agrees. “Maybe I should’ve done that. But I wasn’t feeling like giving the boy a break. However, even so, I’m not out for his neck. Would it be possible for you to let Sam know that I’m OK if Anders isn’t fired?”

“Thanks, I’ll tell him. Do you want him to be kept out of the project?”

Robin shrugs. “I don’t really care. I doubt he’ll be offensive again, but he’ll resent me for the rest of his life, I’m sure. Anyway, I doubt he’s the only sexist jerk there.”

“In that case I’ll tell Sam that Anders can stay in the project too. Let’s hope he’s learnt his lesson and that he and others don’t take that as an excuse to be jerks, since they see they get to keep their jobs anyway. Robin, you’ve had a rough day, you should probably go home and relax. You too, Andy.”

The two go, and I call Sam. Some things are better handled via voice, instead of email.

“Hi, Sam, I heard there was an incident today involving Anders.”

Sam’s voice is sombre, but not angry. “Yeah. I’ve had a talk with him. How’s the situation at your end?”

I keep my voice sombre as well. No point in being excited right now. “I just heard from Robin. She agrees that if Anders promises to behave himself in the future, he can stay on.”

“I just told him that he’s going to be formally fired tomorrow.”

“That’s not necessary for us.” I take deep breath, intentionally making it noisy so that Sam hears it even over the phone. “Between you and me, Robin could’ve handled this privately, but then so could you, Sam. It’s enough of a mess, so I think, we at the Team think, it’s gone far enough. Don’t you agree?”

“Well, I’m glad to hear you say so. I’d like to keep Anders. He’s one of our rock stars. I’ll call him tonight.”

I make a grimace of my own, though not as bad as Robin’s. Rock star is a term we’ve learnt to loathe. It tends to be a harbinger of attitude problems.

“Just tell him that he’s getting off with a warning, and that he shouldn’t expect anyone from the Team let sexist behaviour or other harassment to pass. Not even as a joke.”

“I understand. I’ll call him now. If I wait until the morning he might spend the night getting angrier, and do something stupid.”

We hang up. It’s getting late, but I have one more chore to do, and I’d better get to it while I still have things clearly in my mind. I write a description of the incident in our company internal blog, which acts as an internal knowledge base. This will let everyone in the Team know what has happened. It also means we won’t forget it, and we can use this as a data point when considering brogrammer clients in the future.

I wander around the offices, and spot that Andy is still there. He sits at his workstation, and seems to be reading news sites.

“Andy, do you have moment?”

He is a little startled. Clearly he was deep in his thoughts.

“Sure.”

“I wanted to talk with you privately about what happened today. You up for that?”

We go into my office, and I close the door behind me. I’d rather not be overheard or disturbed for this.

“Could you briefly go over what happened after Anders was thrown out? The presentation, and how it went, and how SmartHome took it?”

Andy gives a sketchy summary of Robin’s talk. It’s what we’d discussed beforehand. SmartHome was dependent on a central cloud service, for storing measurements and logs, and for controlling the devices, even though everything is also stored locally on the hub device. The hub even has a local database, a real one, not just SQLite. A database with 11 tables with overlapping data and no unique key to match things between tables. No access control between tables. A pretty mess. The engineers hadn’t liked having their work described that way, but at least most of them warmed up to the suggestion of having a program provide a simple HTTP API to the database, with access control, and a much simpler data model.

“Thanks. How did Robin do?”

“She went a bit softer on them than we’d planned. I guess she didn’t want to be harsh after Anders.”

I nod understanding. “OK, sounds like it went reasonably well. I would’ve been fine to postpone the presentation by a day or two, to let everyone calm down, but sounds like Robin and you did well.”

Andy finally goes home. Even he shows signs of it having been a long, stressful day. Nobody likes confrontations like that. Except maybe the kind of macho brogrammer jerk that Anders seems to be.

I do a final round around the office, and find everything to be dark. I get my things, turn off the remaining lights, and go home. It’s dark, and wet. The street is old cobblestones, shiny, and there’s more rain coming down softly. The stones are slippery, but I’m dressed for the weather. It’s late enough that it’s long past rush hour, so while the streets aren’t empty, there are only occasional cars. At the same time it’s not early enough for the party folk to be out and about. Small groups of teenagers roam the streets, but aren’t making a nuisance of themselves. I guess the rain dampens their enthusiasm for mischief. It’s one of my favourite times to enjoy the city.

I round a corner and almost run into someone. He grabs me by the shoulders.

“Anna, is that you? God, it’s been years! How are you?”

It’s Russ. My ex. Well, one of my exes. In a previous life many years ago we were going out, but it ended. In fact, I was expecting him to propose, but instead he broke up with me. It was rough on me, but I got over it. We’ve not seen each other since. But hearing his voice, and seeing his surprised-happy face brings up pleasant memories. I guess I really have gotten over the breakup. I smile.

“Russ! It’s you! It’s been years. I’m good! Except it’s been a lousy day at work just today.”

“Oh dear. Do you want to talk about it?”

That’s classic Russ. I nod, and he walks with me to a pub close by. It’s a pub in the English style, in Helsinki. Not my usual kind of place, but it’s quiet and dry, so it’ll do. We have drinks, and I pour out a suitably pseudonymised version of the day’s events. It feels good, I don’t often get to talk with a sympathetic friend about my work. He makes the right kind of noises, and tells about his own life. We carefully avoid touching on the breakup. I do that to avoid ruining this evening. I can take it up with him some day. Today I just want to enjoy good company.

Which I do, for longer than is sensible, and with a glass of whisky too many maybe. When it gets time, we leave, shake hands, and go our separate ways. Younger me would’ve gone home with him. Younger me did. I’ve learnt to be more careful since. Russ is very nice tonight, but he hurt me once. If he’s grown and I can trust him to not hurt me again, we can consider things, but not now. I’m such a romantic.

Avant-garde

“What the RUDE WORD, RUDE WORD, RUDE WORD is this?” Anna sits at her desk, one hand on her mouse, speaking loudly. “ROOOBBIIIINN! Come heeeereee!” In a minute Robin shuffles in through Anna’s doorway. “What’s wrong? You’re upsetting the whole office with your screaming.” Anna almost never raises her voice. When she does, it’s upsetting to those who know her.

“I just got an email from Sam. They’re changing the hardware platform.” Robin raises one eyebrow. She realises at once what this may mean. “Does he say why?”

Anna shakes her head. “Not really. He says, and I quote, ‘To align our customer-facing deliverables with global leaders in leveraging technology we proactively synchronise our product schedules with Arm release road maps.’ What a RUDE WORDING pile of RUDE WORD marketing RUDE WORD.”

Robin sighs deeply, then slumps down in a chair. “Does he realise that our project will have to restart from scratch? That all the work done so far is useless? That there’s no chance of meeting any agreed deadlines now?”

Anna grimaces. “Of course he doesn’t. If they actually do this, it may mean we lose the project.” Robin nods. “And that means we’re in a trash compactor, the walls are moving inward, and something just touched my leg. We were already getting desperate when we landed this project.”

Anna nods. “Exactly. I better meet with Sam to try to stop this.” She buries her face in her hands. She sobs once. “I don’t know, sometimes it just feels like too much. Clients seem to always try to shoot a project in the head, just when things start moving along well.”

Robin shifts uneasily in her chair, then gets up and stands next to Anna, and gathers her into a hug. Robin smiles uncertainly. “There, there, it’ll be all right. We’ll get through this in some way.”

Robin chuckles. “Anyway, they’re not shooting the project in the head. They’re sawing off their own leg. With a blunt axe. Which is rusty.” Anna barks a short laugh, and indicates she needs to get out of the hug. She takes a deep, deep breath, and shrugs. “Sorry. I was feeling overwhelmed for a moment. Better now. Thanks.” Robin goes to the doorway. “I’ll go make us tea, so we can have a calm discussion about this, and decide what to do.”

Robin says on IRC. “Everyone: sitrep and planning, kitchen, 5 mins. Drop everything you’re doing.”

Anna is in the kitchen, with her laptop and five steaming mugs of tea. Everyone in the Team has their own, favourite mug, labelled by their name and preference as far as tea, sugar, and milk. Anna takes a sip of hers. It says “Anna, Russian Caravan, full-fat milk, no sugar”, and has a picture of Snufkin from Moomin, sitting on a river bank with his fishing rod. The mugs had originally been bought a few years ago, when the Team was set up. When new team members had joined, new mugs had been made.

Over the next few minutes, team members are coming in, taking their mug, and sitting down, until only Nina is missing. Robin puts her mug down (“Robin, Lapsang, skimmed milk, sugar, picture of Lara Croft”), and goes knock on the door of Nina’s lab. “Excuse me, Nina, we’re having a meeting and we need you.” Nina and Nick look up from the bench, where they’ve been debugging something together. Robin nods at him. “Nick, I’m afraid I’m going to have to ask you to leave. We’re going to discuss something sensitive, and it would be awkward to have you present. Sorry.”

Nick stands up, and nods. “I understand. Is it OK if I come back tomorrow?” Robin smiles. What a polite young man. “I’m sure it it will be, but check with Nina in the morning, OK”

Robin and Nina go to the kitchen, take their mugs (“Nina, any tea, no milk, no sugar, picture of a 555 timer IC”), and sit down. Anna stands up and starts speaking. “I’m afraid there’s a bit of bad news. SmartHome have just let us know they want to update their hardware platform. I called this meeting to tell you that and for us to discuss the situation together.”

The room explodes in a cacophony. Anna lets it continue for a moment, then raises her hand. The room quiets instantly. An outsider might mistake it for military discipline, but it’s a habit borne from collaborating with the same equals for a long time, and from respect of the role Anna has as mediator. “I have a couple of questions I need to have answers to. First, this is a big enough change that it lets us cancel the contract without a notice period, but still get paid for what we’ve done so far. Do we want to do that?”

Robin raises her hand. “I’d like to keep the contract, if we can talk them into keeping the old hardware platform.” She drops her hand. Andy and Bert look at each other, nodding. Bert raises his hand. “Andy and I agree. We’ve put in a lot of effort into the old platform already, would be a shame to let that go to waste.” Andy keeps his hands on the table, but raises his index finger. “We can start on a new platform, but if they haven’t got the hardware working yet, it seems like an impossible project.”

Nina nods, but keeps quiet. Robin makes a short wave. “That’s a good point. Anna, do you know what the status of their proposed new hardware platform is?” Anna shakes her head. “Sam wasn’t explicit about that, but my impression is that they’re only about to start designing it. It’s not ready for us to port to.” Robin grimaces, but Andy speaks, without indicating he wants a turn. “Erm, really? In that case, I don’t think we can wait for that.” Andy quickly raises, then lowers his hand.

Anna stands up. “I think we agree. We can’t continue on this contract, if they change the hardware platform. It would delay all userland software progress too much. It would probably mean we run out of money before this contract is paid. Frankly, I would expect SmartHome to go bankrupt before they get the new platform working.”

Anna shrugs. “My other question is, do we try to talk them into not upgrading their hardware platform, or do we look for a new client?”

Another cacophony. Robin raises her hand, and everyone goes quiet and looks at her. “I’d like to keep them, if possible, I see a possibility for a long, mutually profitable relationship, if we can both survive the current project.” There are murmured agreements and nodding.

Anna takes a deep breath. “Thank you, looks like we have a consensus. I’m sorry we’re in this situation, but it’s something we’ve seen before. The client thinks they’re being smart, but are actually just running really fast carrying a naked blade pointed at their heart. Everything looks like it’s going well, until they stumble and they experience a sudden, painful stop.”

Nina raises her hand to her shoulder. “What do we do now?”

Anna looks at her, then around the room, into the eyes of each of her co-workers. “We continue work on the old platform, and I go talk to Sam face to face and try to talk sense to him. I’ll probably be back later today, and then we’ll see. If it drags on, I’ll let you all know.”

In the afternoon, after Anna has returned from a long lunch with Sam, she visits Robin’s office, and sits down. “I think we’re OK. I talked Sam out of doing a hardware refresh now. They’ll do it for the next generation instead.”

“Well done, Anna! Was it a difficult discussion?”

Anna shrugs. She isn’t smiling, but doesn’t look distraught either. “It wasn’t easy. He was really enthusiastic about using the new 64-bit Arm architecture. But he believed me in the end when I told him he couldn’t have our platform and new hardware in the same product iteration.”

“Good. Meanwhile, Andy and Bert had a really productive day today. We have our platform working on the SmartHome hardware now, at least enough to start getting SmartHome to port over their applications. There was cake after all the system tests passed the first time. You missed that, but we saved you a slice the fridge. It’s your favourite, death by chocolate.”

Anna grins. The Team is not shy to celebrate its achievements. “Excellent news. And if we pull off the current, now-saved project, we may get SmartHome to hire us to update our platform to their new hardware version, too.”

Anna pushes herself up by pushing with her palms on her knees. “But now I’m exhausted. I’m going home early. I need a relaxing evening, after today. Maybe a sauna. Might call Russ and see if he wants to have dinner.”

Robin looks surprised. “Russ? Are you seeing him again?”

Anna shakes her head quickly. “No, no, not like that. I just ran into him the other evening, and we had a few beers. It was nice, but I’m not getting involved with him again.”

“Good. I mean, it’s not like he’s a bad egg, but your history with him makes me wary.”

Anna comes in late the following morning. Robin pokes her head out of her office. “Hi Anna! Get a cup of tea before you open your email.”

Anna stops in the middle of taking off her coat. “Oh? Clearly something bad has happened. What’s up?”

Robin is determined and shakes her head. “Tea first. We’ll discuss when you have a cuppa.”

Anna finds an almost full pot of tea in the kitchen, and ambles into Robin’s room with a steaming mug in her hand. She sits down. “So, what’s up?”

“Sam’s sent an email, cc’d to me, asking for an all-hands meeting with us and their developers and management, to discuss the new hardware platform. It seems Sam’s bosses were not swayed so easily.” Robin shrugs a little. “They want it tomorrow. They’ll arrange a place, we just need to show up.”

Anna grimaces. “I should’ve known it was too easy. Clients never want to hear they’re wrong. What do you think about this?”

Robin grimaces too. “I don’t think we can avoid it, even if it costs us a full work day and possibly a client. We’ll have to go.”

A nod, and another grimace. “I’ll go read the email, but I think you’re right. We’ll spend today preparing for any arguments they may have for a platform refresh now. I think that’ll be what you and I do today. Do you have the time?”

“I was meant to draft a plan to get SmartHome devs to start porting their software to our platform, but that’ll have to wait. I’ll notify them.”

“Good. Well, not good, but you know what I mean. We’ll gather our people in the afternoon and go over the arguments. Have you told them yet?”

“Nope, I wanted to wait until we decide to go.”

“OK. I’ll notify our people today. And tell Sam and his bosses that we’re coming. Is 13:00 a good time to gather everyone?”

“Should be. RUDE WORD I don’t like this, but needs must.”

Anna nods, gets up, and goes to her own office. After a deep breath she opens up her email, reads for a while, and sends out a couple of emails. One to the Team, explaining the situation, and another to SmartHome asking where and when.

They assemble at the office. It’s 8 in the morning, and for most of them this is unusually early. Anna arrives with a car, the team piles in, and they go to the SmartHome office.

They arrive, get out of the car, and walk in formation into SmartHome HQ and the large meeting room they’ve visited before. The SmartHome CEO, Lasse, and other members of top management are already there, as well as Sam, and several senior developers.

The CEO stands up. He’s dressed in a navy blue suit, with a red tie. In his late 50s, somewhat stout but not fat, looking serious, but calm, he coughs to get everyone’s attention. “Welcome, everyone, I apologise for the abrupt meeting, but we need to resolve this issue of refreshing the new hardware platform sooner rather than later.” He looks at Andy. “I understand that your team is objecting and raising concerns about the new hardware. Is that correct?”

Andy looks momentarily confused, and looks at Anna, who speaks. “I’m Anna Carter. I speak for the Team.”

Now Lasse is a little uncertain, looking back and forth between Andy, Anna, and Sam. He recovers quickly. “Very well. Is it correct?”

“We’re concerned about the impact of a hardware refresh on the time table of the project. We think the refresh is OK.”

“How magnanimous of you. I’m not used to hired help giving me permission to make strategic changes. Especially not women.”

Anna’s jaw drops open, and she just stares. The room goes quiet. SmartHome developers look at the table in front of them, visibly not squirming or doing anything to call attention to them. The Team members take a deep breath, let their shoulders sag, and look at Anna and Robin.

Robin stands up. She looks around the room. Those who know her, can see she’s angry from the way her lips form a thin straight line. “Sir, if you hire experts and ignore what they say, you are an imbecile. In the current situation, your choices are to go bankrupt or to let us help you save your company. It seems you want to go bankrupt and make every one of your employees lose their job, while you can just retire early. Very well, we don’t wish to work for you. Have a good day.”

She pushes her chair back and steps away from the table. Sam puts his hand on Lasse’s arm, and whispers urgently in his ear. Robin reaches the conference room door, puts her hand on the handle, and looks back. The rest of the Team have quietly also stood up and are forming a queue behind Robin. Anna is red her face, and her hands are shaking.

The Team goes out of the door. Sam follows them. “Please wait.”

Anna turns to him. She’s so angry she stutters. “Y-you.. w-wait? Why w-would we wait.”

Robin puts a calming hand on Anna’s shoulder. “Sam, you must understand that what just happened was humiliating and infuriating, and cannot be tolerated.”

“Yes, you’re absolutely right. What Lasse said is unacceptable. But I think I can talk sense to him, and talk him down off his high horse, and let us save the company. Because I now understand that what you said is right.”

Nina shouts and walks towards him. “NO!” Sam takes a step back. Nina pokes her finger in the middle Sam’s chest to emphasise her syllables. “It’s not RUDE WORD enough to talk to RUDE WORD Lasse. He’s old enough to know better. Old RUDE WORD sexist stick in the muds like him are NOT RUDE WORD ALLOWED to have power over us. We WILL RUDE WORD NOT WORK FOR HIM.”

Sam takes a couple of steps back. Hurricane Nina is taking him by surprise.

Nick comes out from the conference room. “Nina, are you OK? You’re being very loud.”

Robin steps forward, and turns Nina by the shoulders. “Nina, you’re absolutely right. We all agree on that. But let’s take this to our office and discuss this amongst ourselves. We need to process this. It’s a bad day.” She looks at Sam. “We’ll be sending our final invoice today.”

Anna pipes in. “It’s clause 42, section 3. In the event of the customer changing the parameters of the project in the middle of the project in ways that make it difficult to finish on schedule, the Team can abort and is owed for work already done. You better not try to squirm yourself out of it.”

As if by remote control, the Team all turn towards the exit, and march out.

Sam and Nick stand still and look at the departing group. The exit doors closes, with the soft thump and click of its automatic mechanism. They continue to stand still for a moment. Finally, Nick speaks. “I guess we need to go back inside. But I really don’t want to.”

Sam’s shoulders droop. He looks back at the conference door. Then at the exit door. “I have to go back inside. You can have a family medical emergency if you like.”

The Team drives back to their office in silence. They gather in the kitchen. Robin makes a pot of tea. The silence continues while the tea is brewing. Bert takes out everyone’s mug and puts them in a row on the kitchen table, and takes out two kinds of milk from the fridge, and three kinds of sweetener (sugar, artificial, honey). Robin pours tea. Bert adds milk and sweetener of choice to each mug. Everyone takes their mug.

Anna takes a sip. “Well, that was exciting. I think we should process what happened together, rather than going home and have everyone marinate in solitude.”

Nina shakes her head. “I can’t believe he said that. I can’t believe I said that to Sam.”

Andy puts his mug on the table in front of himself. “One reads about people like Lasse, but one never expects to meet them. It was like meeting a villain from a movie. And Nina, I think you said what we all felt.”

Robin sits hunched, holding her cup with both hands. “Frankly, this wasn’t a huge surprise to me. There were signs. But I think we did the the only thing we could do. We shouldn’t feel bad about it. Not about taking them on as a client, nor for quitting today.”

Anna nods. “Yes, I agree. We should feel good for standing up against bad behaviour. The only thing we should worry about now is what we’ll do next, in terms of a new client.”

Robin shakes her head. “It’s important that we find a new client, but can we not worry about that today. I think we need to recover from today’s events first.”

Anna nods again. “I guess you’re right. What can we do to get over this?”

Bert puts down his mug. “I find that when I’ve had a bit of a shock, eating something helps. We could have lunch together.”

“A great idea.” Robin smiles. “We could order pizza for everyone. Anna?”

“Yeah, let’s do that. I’ll order from my room. If everyone would message me on IRC what they want, I’ll place the order. The usual place.”

Pizza has arrived and been consumed. Many words have been said. Much anger has been vented. The Team is leaning back in their chairs, momentarily content and silent. Anna’s phone rings. She looks at it.

“It’s Sam. I should probably take this.” She rises and goes to her office.

“Hi, Sam.”

“Hi, Anna. Are you guys all right?”

“We’re OK. How are you?”

“Look, I wanted to call and ask if there’s any chance we can patch things up. I think I have the leverage to get Lasse to apologise and get out of the way, even if he is the founder and the CEO.”

Anna takes a deep, audible sigh. “Look, Sam, I’ll be honest. It’s not easy. Lasse burnt bridges today that are not easy to rebuild. We don’t trust SmartHome anymore, and we don’t work with clients we don’t trust.”

“I see. Is there anything we could do to convince you to not break with us?”

“I don’t know. I’d have to talk with the whole Team about it. How far are you willing to go?”

“Hmm. This is not an easy situation for anyone, right now. I’ll take a chance and be open about what’s happening here. I hope you won’t spread it around. There’s a bit of a civil war happening, and most of us at SmartHome see that you guys are right and we either make a new, better product with your help, or we are finished. Some of the older men in upper management are resisting, but the resistance is crumbling.”

Anna is laconic and inexpressive. “OK.”

“I won’t say you can demand anything you want, but I think you’d have a strong bargaining position, if you were willing to bargain.”

“OK.”

“Are you willing to bargain? Please?”

“I’ll talk with my people. I don’t know if they’re willing. But just in case they’re willing, do you have time to visit our office today? I have the feeling that if possible, this shouldn’t be allowed to fester overnight.”

“I can be there in fifteen minutes.”

“Make it sixty. We’ll talk and I’ll let you know if you shouldn’t come.”

“Thanks.”

The Team has gathered in the kitchen again. A new round of tea has been brewed and served.

Anna stands up. “Okay, so this is a bit of an interesting development. Sam called. He says that SmartHost is having a civil war and he wants to know what it would take to bring us back, or least re-open negotiations with them. Assuming his side wins. What do we think about that?”

Nina raises her hand. “Will Lasse still be the CEO?”

“I don’t know. The situation is unclear. In any case, it might be too much for us to ask for them to get rid of him entirely. He is the founder, after all.”

Nina make a grimace. “Shame, but I see your point. But I prefer him to not be involved in this project, or have any say in it.”

Robin raises her mug and sips. “Mmmm, I like how you think, grasshopper. More realistically, I think we can and should insist that they commit to a plan with us. The plan we’ve been working on all along. And by commit, I mean they won’t unilaterally change it on us. They should also agree to a change management process with us.”

Nina looks at her with her eyebrows raised. “Change management process? What fancy words you use, grandma.”

The room fills with chuckles and giggles. It’s clear that a big ball of tension has just unravelled. Anna grins. “Sounds like we’re in silent agreement, but I’d like to make it explicit. Everyone in favour of re-opening discussions with SmartHome, or at least Sam’s faction, if we can agree on what we think are sensible ground rules, namely, they stick to the current hardware platform, and let us guide the software development. Who agrees?”

Everyone raises their hand, except Robin. “Robin? Do you want to say something?”

“I was hesitant about taking them on as a client in the first place, and only agreed to it because we need the money. My fears have been realised. But given the ground rules as you outlined, and given that we have the same need of money, I’m willing to try again.” She raises her hand.

“Good, that makes us unanimous. This situation needs that. I agree we need to treat them with care. I’d like to invite Sam to our office today to discuss this and explain our conditions. Everyone OK with that.”

This time, everyone raises their hand.

“Hi, Russ. Fancy dinner tonight?” Anna is in a good mood. Constructive negotiations always made her satisfied, and especially so when they’re successful. “I’ve had a long, roller-coaster ride of a day and could do with some good food and company.”

“Hi, Anna, yes, I’d love that. Is 19 at the Santa Fe restaurant OK?”

“Perfect. I’ll see you there.”

Nina sits in her lab, at the table, with her laptop, typing and frowning. “Nickster, U OK? I hear u have crisis happening?”

A few seconds pass, and the response shows in her chat window. “Hi, Burn. I’m OK. Thanks for asking. Interesting times in the faux Chinese curse sense.”

Nina types again. “I don’t no if we work 2gether anymore, but wld like to keep in touch.”

“I’d like that too. I like to talk tech with you.”

“Kewl. I like 2 talk tech with u 2. Also I like u dont hit on me.”

“Yeah, you said. I’ve never really been just friends with a girl before. It’s nice. Relaxing, even, to not have any romantic or erotic tension.”

“U say such nice things. C u tomorrow?”

Assault

It’s been a couple of weeks. It’s late on a Thursday evening. Anna is sitting in the subway train, on a bench. On the Helsinki subway the trains are orange, and the benches are orange. The benches are in pairs to form booths, ostensibly to get the famously asocial locals to be modern and urban and chat with their co-passengers. In practice, it means they read books, newspapers, or, these days, looked at their smartphones. Or just stared out of the windows into the underground tunnel walls. Anything to avoid talking with each other.

Anna is doing that. It’s been another long, stressful day at work, and she’s enjoying watching episode of her latest favourite TV show on the phone, while going home. When she gets home, she’ll go to the sauna to really relax and clean herself both bodily and mentally and spiritually.

A pair of twentysomethings come into the train car, and shove into the booth with Anna. She shifts a little. The young men are both drunk, one much more than the other. They carry large bags, and a bag of takeout from an transnational hamburger restaurant chain.

Anna dubs them as Dumb and Dumber. Dumb is carrying the food, and what looks like a bunch of gym clothes. Dumber is carrying a bag with something hard, which makes clonk sounds, when it hits the benches or the floor.

“Be careful, that’s my Playstation.” Dumb is clearly upset at Dumber. Dumber seems to not care. Instead, Dumber puts his feet on the opposite bench, where Anna is sitting, and forces Anna to shift to avoid his dirty shoes.

The train ride continues for a while. Dumber keeps accidentally kicking the Playstation, and trying to grab the food bag from Dumb. Dumb keeps the bag out of reach and complaining about the safety of his gaming equipment.

Dumber gets bored and starts looking at Anna, then poking her with his feet.

“Please stop.” Anna isn’t amused and tries to get back to watching TV show. The poking continues.

“Come on, girl. You should feel honoured by a little male attention, the way you look.”

Anna puts away her phone and looks at Dumber, straight in the eyes. “Don’t be silly, boy. If you wanted more space, you could’ve sat in the next booth, which is all empty.”

Dumber pokes Anna again with his feet. Anna gets up to leave the booth. Dumber gets up as well and grabs Anna’s coat.

“RUDE WORD Anna. What the RUDE WORD happened to you?” Robin arrives early to the office, and finds Anna already in the kitchen. Anna sports a shiner. Her right eye is swollen, and the swelling is quite dark. There’s some other bruises on her face as well.

“There was a bit of an assault in the subway yesterday. A drunk young man.”

“Oh no. Have you been to ER? How badly does it hurt?”

“I’ve had medical care, though not from the ER. I called Russ instead. He came over and took care of my face, and held me while I cried.”

“This is not good. The assault, I’m assuming Russ took care you of you like gentleman.”

“Yes, he was very gentle.” Anna makes a wry smile, then winces. Smiling is clearly painful. She takes a pill bottle from her drawer, extracts a pill, and takes it with a gulp from the glass of water on her desk.

“I’m going to be OK, but I don’t really want to have a lot of fuss.”

“Okay, I can understand that. But what happened? Or are you up to talking about that? Did you report it to the police?”

“Not really. We talked about it a lot with Russ, and I’ve started my mental healing process, but I don’t really want to re-live it with everyone separately. Sorry. I didn’t tell the police, you know how they’ve treated me before, when I’ve been raped. Don’t trust them.”

“Oh, my, you have nothing to be sorry for. I know exactly how you feel. I’m here if you want or need to talk, about anything, at any time, but there’s no pressure. OK?”

“OK. Love you too, Robin. You’re a good friend.”

Anna goes on IRC and tells the rest of the team. “Hello, gang. I’m going to be withdrawn and avoid seeing people in person for the next few days. I have a black eye. I was assaulted by a drunk young man on the subway yesterday evening. I’m going to be OK, but I don’t want to be fussed over, or have to talk about it repeatedly. So I’m going to stay at home for a while, and enjoy a bit of quiet and solitude. I hope you’ll all understand. In an emergency, you can call me on my private number, but otherwise I’d like to not hear about anything for a while.”

She turns off her laptop, and packs it in her backpack, then slinks out of the office to go home. On the way she stops at a grocery store, to fill up on foodstuffs: bananas, apples, pears, and pine apple for a fruit salad; eggs, milk, flour, and butter for pancakes. She fully intends to pamper herself with unhealthy food.

As she leaves the grocery store and is heading towards the subway (“I’m not going to be intimidated and start avoiding the subway, I won’t”), her phone rings.

“Hi, it’s Sam. My bosses want to have another meeting. Would you and the Team be free tomorrow afternoon?”

“Hi, Sam. I’m afraid I have a health thing, so I won’t be available, but Robin can handle things while I’m away.”

“OK. I hope it’s nothing serious and that you get well again soon.”

“Thanks, bye”.

She quickly types a message to Robin. “Sam called, they want another meeting. Could you handle it in my absence?”

“Sure thing. Don’t worry. Get well.”

She walks for a minute, then takes out her phone again.

“Thanks for yesterday. You saved the day. I’m going to take a few days off, and be at home incommunicado. If you want pancakes, come knock on my door.”

She taps “Send” and turns off her phone. Sometimes it’d be nice to live with someone with whom to share one’s sorrows, and not have to beg for people to come visit to cheer her up.

Ambush

“Hmmm.” Anna is at her desktop computer and stares at one its 30" screens intently for several minutes. When the screen starts to dim to indicate that the screen saver is about to take over, she taps the control key to stop it, then Alt-TABs to the IRC window. “everyone, we’ve some news from SH, seems they’ve been sold and Lasse is being replaced, we should ponder and discuss this”. She presses Enter to send the message, then continues to type. “I’ll bounce the mail I just got from Sam, please ack you got it, and I’ll poke anyone who didn’t, since this is important. Let’s meet in the kitchen in half an hour to discuss. I’ll order pizza for everyone.”

The Team starts saying “got it, reading now”, one by one. Good, everyone’s awake and she doesn’t need to rouse anyone from hack mode.

She orders pizza from their usual place, the usual selection, with the usual drinks. After about half an hour the delivery arrives, and she carries it to the kitchen. Everyone else starts gathering there.

Nina grabs a slice. “So, we read the email. On the surface it doesn’t seem like it should affect us. Does it?” She opens a large bottle of soda, with a loud hiss, and pours some into a cup.

“You’re right. On the surface it doesn’t affect us directly or immediately.” Robin takes a couple of slice on her plate. “But who knows what the real effects are. So far the SmartHome upper management has not convinced me of being wise, and now anything might happen.”

Andy isn’t eating, having had a curry lunch elsewhere earlier. “I’m in a Matrix room with some of the SmartHome devs, and they’re gossiping. They don’t really know what’s going to happen either, which is really great for morale and everyone couldn’t be happier if they got a thousand bitcoin dumped on them.”

Bert chuckles. “Careful there, mate, you sarcasm is showing.”

“He’s not wrong, though.” Robin is shovelling pizza into her mouth and speaks between bits. “This is sure to inject a lot of uncertainty and that’s not good for productivity.”

Andy shrugs. “Scuttlebutt has it that Lasse is going to be kicked out, and they’re hiring a replacement from the outside. Not officially announced, however.”

Anna picks up her phone, and fiddles for it a bit. “I’ve another message from Sam. Andy’s right, Lasse’s out, and the new guy is starting today. His name is Antero, some kind of management consultant. Antero wants to have an all-hands meeting in about three weeks, so he can be briefed on the project. Exact time and place and agenda to be decided later on. I suggest we’re going to participate, we don’t really have a choice.”

There’s nodding and mumbled agreement around the room, and more pizza is taken out of the pizza boxes. Another large bottle of soda is opened with a hiss.

Three weeks pass.

“Sam, thanks for confirming the date for the all-hands. It’s Thursday, and the meeting is on Tuesday, is there an agenda yet?” Anna is on the phone, not visibly agitated.

“Sorry, we’ve not had an agenda either. I’ll poke around and see if we can’t get one soon.”

“Thanks. Meetings without a clear agenda do tend to be useless.”

That afternoon the agenda arrives by email. Anna vents on internal IRC. “I just got the agenda for Tuesday. Forwarded it. Not happy, but it’s what we have.”

“Fails to have a goal for the meeting, or to say what each participant should do at the meeting, if anything. Or to spell our names right. Great start, Antero.” Robin does not like badly run meetings and is feeling uncharitable. “I count a total of 17 typos in a screenful of text, and that’s ignoring bad grammar, logical inconsistencies, and other errors. This is standard fare for management consultants, but I’m not having a great feeling about this.”

The Team and all the SmartHome developers, and some new people are all gathered in the large meeting room at SmartHome offices.

“Welcome, everyone. I am Antero Virtanen. I’m the new CEO of SmartHome. I suggest we start this meeting with introductions. I’ll go first, and then we go around the room, and everyone can say their name and very briefly what they do. But do keep it brief, there’s a lot of us here.”

He opens his laptop, and starts connecting it to the video wall in the meeting room. After a minute, he gives up, and another new face gets up and takes over.

“While Paul gets my laptop to work, I’ll start. My background is a management consultant, and I don’t really know much about the technology this company uses.” Antero laughs briefly.

“I started at SmartHome three weeks ago and have been getting up to speed on things. Today is all about me getting up to speed with the technology side of the company, and getting all of you working well together.”

Robin and Anna look at each other. Both raise their eyebrows a little, then turn back to look at Antero.

“I would also like to introduce Paul, who seems to have gotten my laptop connected. He’s the new chief of IT and technology. We go back a long way with Paul. I brought him with me to SmartHome. Some of you remember Martina. Paul replaces her.”

Paul waves. “Hi, I’m Paul Piper. I do computer things for Antero. This is now my third company where I work for him. I tend to prefer Macs, and we’ll have to discuss if the plethora of Windows and Linux machines I see around the room is the best way to organise things. But that’s not on topic for today.”

Robin and Anna share another eyebrow moment. This time, the rest of the Team joins in. They’ve heard this before, someone wanting to mandate what developers run on their development machines. It’s never a good sign.

The round of introductions start. Everyone is clearly doing their best to be brief. The Team members stand up when it’s their turn, briefly say who they are, and sit down again.

Antero rubs his hands together. “Good, good, that went well. Let’s get started for real. First order of business, who would like to explain what the SmartHome product really is?”

Sam stands up, walks to the podium with his laptop, detaches Antero’s, connects his own, and starts a presentation. While the slides are clearly re-used from company marketing material, it’s also clear he’s prepared the presentation for the meeting.

Another eyebrow moment for the Team, boosted by small shrugs.

“Thank you, Sam.” Antero rubs his hands together again. “Now, I understand we have hired a company to help us improve our products for a new generation. I believe that’s you guys, Anna. I’d like to understand what that’s all about. Could you walk all of us through that?”

Anna gives Robin a glace, and stands up. “Robin would be better for going through the technical stuff than I am, but I’ll give a brief overview. I’ve not prepared a presentation, since one wasn’t indicated in the agenda, so this will be brief and ad libbed.”

“Don’t worry, Anna. This is not an audit or any kind of attack on you and your people.” Antero keeps rubbing his hands together and laughs.

“Very well. What we in the Team have is a customisable software platform for building the kinds of IoT systems that SmartHome’s products are. We’ve provided it to other customers, too. It’s kind of generic, but requires some customisation for each hardware platform, which we’ve done for SmartHome. Our platform makes it simpler to write reliable distributed IoT applications. We’re currently—”

Antero has stopped rubbing, and interrupts in a gentle tone. “But SmartHome already had working products. Why do we need your platform?”

Anna looks at him for a moment, entirely motionless and expressionless. Without taking her eyes off Antero, or moving, she speaks slowly. “You may want to ask that of Sam, or the others who came to us. He can tell you in exactly what shape SmartHome products are and why you need to fix them in order not to go bankrupt.”

Sam clears his throat. “Anna is correct. We approached them to help us update our entire product line. Our current product line is in trouble. We have serious problems with security, for example, and are taking a lot of heat about it in the market.”

Antero sighs. “Very well. Let’s continue. I’ve asked various engineers, SmartHome engineers that is, to prepare a presentation on the Teams’ new platform. I understand there’s some concerns about stability. Anders, if you wouldn’t mind?”

Anders stands up, smiling tightly. He brings his laptop to the end of the conference table, attaches it to the projector, and waits for his first slide to show up. The title is “Issues with the Team platform.” The Team members shift position in their chairs. Their faces are carefully expressionless. They don’t say anything.

“I’ve been part of the group at SmartHome helping get the Team’s new platform into place. I must say I’m not convinced of their professionalism or competence. The platform is slow and riddled with bugs, which I think are due to the excessive complexity of the software.”

He changes slides. The new slide is titled “Known bugs” and lists, in a small font, a very large number of issues, with scary titles. “I’m sure bugs can be fixed. Creating and fixing bugs is what software developers are all about, after all. Heh Heh.”

The Team looks at Anna, who looks back, concentrating on Nina, and shakes her head minutely.

Anders continues. “I’m more worried about performance. I did some benchmarks, and the devices can barely handle a few thousand HTTP requests per second now. With our production version, we can handle at least ten times that.”

Antero nods. “That seems like a big problem.”

“Yeah. At the same time I agree that we do need to fix our products. I did a quick proof of concept replacement, which I think we could use as a base of a new platform that we develop in-house. It’s only a few hundred lines of PHP. For speed, I’ve dropped some of the things the Team does in the name of security, which I don’t think we actually need.”

Antero nods. “No point in paying in performance for things we don’t need. What have you dropped?”

Anders smirks quickly. “I don’t think we need HTTPS, plain old HTTP is much faster and nobody’s really going to eavesdrop inside a home anyway. Also, plain HTTP basic authentication is fine, we don’t need the elaborate OAuth2 signed JWT token nonsense that the Team is fond of. All the crypto requires CPU cycles we can’t afford.”

Antero nods again. “That seems sensible. Anna, would you like to comment?” Anders sniggers quietly.

Anna is silent and motionless, but it’s clear she’s suppressing strong emotions. After a few seconds, she looks at Robin, who nods. “I’m afraid I don’t want to comment. This is now a hostile situation. You’ve ambushed us, and expect us to defend ourselves against a surprise attack. We’re not prepared to work with a client that does this. Our contract has a clause for this eventuality, and it means we terminate our involvement in the project as of this moment. We’ll be sending you our final invoice soon.”

Anna stands up. The rest of the Team stands up. “We’re leaving now. Have a good day.”

In unison, the Team step away from the table and march towards the exit. The room is quiet. Anders looks triumphant, Antero looks surprised, but neither moves or says anything.

The Team is gathered in their own kitchen. They are subdued. Bert is the first to speak. “Well, that was fun. What do we now?”

Andy’s head snaps toward Bert. “What do you think? We lost our only client, we panic and go bankrupt.”

Nina grunts. “Maybe we can find something else, quickly enough. Also, the money SmarHome owes us for the work we did should help a little.”

Robin sighs deeply, and holds her mug in both hands, but says nothing. Anna knocks her knuckles on the table. “OK, everyone. I would like to tell us all to be calm, but we’re clearly upset, and we should vent. So for a while everyone can say what they want, and be as nasty as they want, but not to each other. Only towards our former client.”

Andy nods. “I’m the one with the most fragile personal financial situation here. The one with a mortgage and family to support. Just observing. I can’t take personal risks for long. If the Team can’t pay my salary, I’m going to have to find other employment. I can’t afford to miss a single month, I’m afraid.”

Bert shakes his head. “I hear you, although I’m able to be more flexible myself. RUDE WORD this is not fun. I wonder if we should’ve been more humble and not cut our ties to SmartHome.”

Robin lifts her head. “I don’t think it’s about humility. It’s about having a working relationship with a client that doesn’t hurt us, emotionally, physically, or financially. What Antero did killed that.”

Everyone nods. Bert nods, too. “Yeah, I guess. I just fear what will happen to us now.”

Robin nods. “We’ll have to find other income. But make no mistake, if we’d caved under, things would have gotten worse. I’ve seen that happen enough times. Giving in to bullies only gets you to continue to be beat up.”

The room goes quiet. Anna clears her throat. “I agree with Robin. Does anyone want to say anything else?” She waits for a moment. “Very well. If you think of something to say later, don’t hesitate to say it. This isn’t over. I suggest we finish the work day now, and come back to the office tomorrow, and start beating the bushes to see if we can’t find a new client quickly.”

There’s nods and murmurs of agreement. Everyone gets up quietly, puts their mugs away, and starts leaving.

“Hi. Shitty things today. Lunch?” Nina checks her phone after it’s bleeped at her. She taps a response to Nick. “Food court at Forum in half an hour?”

Nina and Nick get their portions of food and sit at a table. “That was s shitty thing my employer did to you.” Nick looks at his plate.

Nina shrugs. “There wasn’t anything you could’ve done. It is what it is. We’ll just have to find a new client and move on. But I’m done with work for today. Do you have time to sit and chat? I could do with a friendly ear.”

The two sit in the food court all afternoon. After they finish their food, they keep talking.

Nick gets back to his employer’s office, and Antero sees him in the corridor. “Nick, my office, stat.” Antero is clearly upset, but keeps his voice low. Nick walks briskly to Antero’s office.

“A SmartHome employee saw you at the food court this afternoon. You seem to have very friendly with that young woman from the Team. What do you have to say for yourself?”

Nick tilts his head. “Nothing? What’s the problem?”

Antero is standing, and makes fists of his hands, and leans them on his desk. “That’s unacceptable. You’re clearly fraternising with the enemy. You either break up with the girl, or you resign. I’m not having any of my employees collude with the enemy like that.”

Nick takes a step back. “Are you serious?”

Antero leans forward, putting more weight on his fists. His volume is rising. “I’m deadly serious. You’re fired. Leave at once.”

Nick takes another step back. “You can’t fire me like that. It’s not legal. That’s why we have unions and legal protections for employees, to protects us from employers being arbitrary. If you want to fire me, put it in writing, and I’ll take it to a lawyer. Otherwise I’m going to my cubicle and continue working.”

Antero takes a stapler from his desk, and looks like he’s going to throw it. Nick leaves the office, and closes the door behind him.

Antero puts the stapler back on his desk, and picks up his phone, and makes a call. “It’s me. Are you up for some work? Tonight. Just you, it’s only a small woman.”

Nina is walking home from the bus stop nearest to her home. It’s been a long day. She’s tired. Every step feels almost too heavy. She’s going to just collapse into bed and be dead for the world until the morning. Her phone bleeps. It’s a message from Nick, who tells what Antero did. Nina puts her phone away, and continues walking. She’s no longer slouching, and there’s an energetic vibe to her steps.

She rounds a corner, and almost walks into a man. A very large, muscular man, who for some reason is wearing a purple ski mask. The man hits her in the stomach with his fist, then shoves her against the wall, roughly. Nina’s head hits the wall, and she sees stars.

“Stay away from Nick, you bitch. And his employer. If they see you again, I’ll come back and hurt you.”

The main lifts Nina up and holds he against the wall. Nina’s feet don’t touch the ground.

“Do you understand, bitch? You stay away. Say you understand.”

Nina is feeling nauseous. “You hurt me…”

The man shakes Nina. “You stay away. Say you understand, or I’ll hurt you more.”

“OK. I understand.” Nina speaks quietly, sounding like a small girl on the verge of crying.

The man throws her to the side. She falls to the ground, and cries out in pain. The man leaves.

Nina is at home, sitting on the floor, leaning towards a wall. She throws a rubber ball into the air, almost hitting the ceiling, and catches it. She repeats this, over and over again, with nearly no variation. After a while she puts the ball aside, picks up her phone, and taps a message to Nick. “Thanks for telling me. Best if we don’t meet in public for a while. Going to have to process this. Your employer is now officially a RUDE WORD poophead.” She taps “send” and puts the phone away again. She picks up the ball and starts throwing it up and catching it again.

The room goes darker, as the sun sets. Nina gets up and goes rummage in her bedroom closet. She throws some clothing onto the bed: a pair of black cargo pants, black socks, a black t-shirt with no printing, a black army sweater. She goes into another room and rummages in a cupboard. She pulls out a black military style backpack, and puts a multi-tool, some cables, and a roll of duct tape, black, into the backpack. She takes out a black laptop with no stickers, not her usual one, and checks that its’ battery is fully charged. She puts it into the backpack.

She goes into her living room, and starts a program on her desktop computer. Suddenly a somewhat loud discussion between two different people starts playing from her stereo. She opens her living room ventilation window.

She goes back into the bedroom, and changes clothes. She puts on a black bomber jacket, and black baseball cap. She puts her keys into a jacket pocket. She dons the backpack, and leaves.

Outside, she goes into a nearby park, and goes to where the adjoining forest starts. She looks around for a bit, and finds a rock the size of a gym ball. She wrestles it aside, revealing a small box with a combination lock. She opens the box, which contains USB drives, cash, and what looks like a passport. She takes a USB drive and several travel cards for public transportation. She closes the box, locks it, and puts back. She wrestles the rock back into place, hiding the lock-box.

She pulls her cap lower onto her eyes, and starts walking through the park, via a little-used path through the forest. Some distance away there are teenagers being noisy, and someone walking a barking dog, but she doesn’t meet anyone. After a long walk she exits the park on the opposite side of where her home is. She’s walked several kilometers, not her usual route when leaving home, and it’s getting quite dark.

She comes to a bus stop. Soon a bus arrives, and she boards it. She shows the green credit card to the travel card reader to pay for the bus ride. She looks down on the floor, hiding her face from the driver. The bus is almost empty so she picks a seat near the exit door.

After a while, she exits the bus, and walks another kilometer, to another bus stop. She boards the next bus, and uses another pre-paid, green travel card to pay for the trip. She changes buses a few more times, until she arrives, and starts walking. She’s about two kilometers away from the SmartHome office.

She arrives at the SmartHome office. The building is dark. It’s clearly past the office hours, and nobody is staying late. The building is going to be locked, but Nina walks around it, in the forest surrounding the building. She leaves the forest and walks next to the side of the building, and sits on the ground, leaning against the wall, legs crossed. It’s a side of the building that’s not visible to the road that goes past the building. There’s some artificial lighting, and possibly a security camera, but she’s not doing anything visibly illegal. She takes out her laptop from the bag, opens it up on her knees and thighs.

She stares at the screen, opens up a terminal window, types some commands, and reads the output. She’s at this for a while, an hour. After she’s done, she puts the laptop back in the bag, puts the bag in her bag, and leaves via the forest. She walks to another bus stop than the one she used to arrive, and uses yet another travel card. On her way back home, via a different route than when she left, she makes a stop at a mall. She takes her laptop and dismantles it, putting the pieces in the WEEE containers of several different electronics stores behind the mall.

It is late morning. Antero comes to work, whistling as he enters the office building lobby. It’s going to be a good day.

Three uniformed police officers meet him. They’re carrying a laptop, and a thick sheaf of papers. “Antero Virtanen?” He nods in assent. “How can I help you?”

“You’re under arrest on suspicion of corporate espionage and sabotage. Turn around, we’ll be putting handcuffs on you. There’s a car waiting outside to take you to the police station.”

“What? That’s outrageous.” Antero protests loudly, but turns around. He’s handcuffed. “What proof do you have?”

“We can discuss that at the station. Just come along quietly, please.”

Anna’s phone makes a noise. She’s at home, and is woken up by the phone. “Uh, Anna here?”

“It’s Sam. There’s been a development. Big things happening this morning.”

“What’s up? It’s too early for me. I didn’t get to bed until late.”

“This will cheer you up, I think. Antero’s been arrested, and I’m the acting CEO for the time being.”

“Arrested? What? Why? And what does this mean for the Team?”

“Look, I was really unhappy at the stunt Antero and Anders pulled yesterday. It was an ambush, and I need you to believe it was as much a surprise to me as it was to you. Do you trust me enough to believe me on that? Please?”

Anna coughs. “Ah, yeah, I guess.”

“Good, thanks. I’d like to undo everything that happened yesterday. I’d like to bring the Team back on the project. Can we pretend yesterday didn’t happen?”

Anna coughs some more. She takes a breath. “Look, you woke me up. I need to wake up and connect with my people and talk it over. Can I call back to you in an hour or two?”

Arrest

Anna knocks on the kitchen table. “We’re agreed then. Given Antero is out and Sam is in charge, we can void the termination of the contract and continue working as if the ambush meeting never happened. Good. I’ll let Sam know at once.”

She goes to her own office, and dials on her phone. “Hi, Sam, we’ve discussed the situation. We’re happy to cancel the termination of our contract, and continue as if nothing had happened. Is that OK with you?”

“Yes! Thank you.”

“However, I’m sure you’ll understand if we will find it hard to collaborate with Anders in the future. We feel he destroyed any trust we had in him. When it comes to technical things, he’s good, we agree with that, but without mutual trust there’s no basis for working together.”

"I understand. I’m afraid I don’t have a legal basis to fire him, but I can move him away from the new platform project and give him something else to do. Is that acceptable to you?

“Sure. Thank you.”

Robin types frantically on IRC. “I just read in the news about Antero’s arrest. Here’s a link. I’ll be in the kitchen if anyone else wants to discuss this.”

She stands up, picks up her phone, and goes to the kitchen. She puts the kettle on, discussing worrisome things is always more pleasant with tea.

Andy, Bert, and Nina stroll in. Anna is away for the day, running personal errands. Robin pours tea for everyone. Andy pick up his mug and sits down. “Fraud, eh?”

Robin nods. “Not entirely surprising, given how he wanted to replace an existing subcontractor just to bring in his buddies. That’s not an honest thing to do and, well, wherever someone’s doing something fishy, it’s not unusual for them to do other fishy things as well.”

Bert smiles. “Yeah, just like in code. Where there’s one bug, there’s probably more.”

Andy clears his throat. “I’m not surprised, but I find the way he was caught to also be suspicious. Why would he have printed all those incriminating documents?”

“The paper said he claims an intrusion into SmartHome systems.” Bert shrugs and looks into his mug. “Doesn’t sound very likely either, though.”

“The documents seem to be real, though.” Robin sips some tea. “Maybe they have a whistle blower. The Smart Home IT people say they’re sure there wasn’t an intrusion.”

Nina laughs briefly. “As if they would know.”

The office doorbell rings. Robin looks around. “Anyone expecting visitors?” Everybody shakes their head. Robin gets up and goes to open the door. Two men in civilian clothes and two in police uniforms stand outside.

“Good morning, ma’m. I’m detective Lax. Is Nina Nirvi here? We are looking for her.”

Robin tilts her head. “Yes she is. May I ask what this is about?”

“We have a warrant for her arrest. Let us in, please.”

The police start walking at Robin, who decides to step aside, and then closes the door after everyone is in. She shouts, “Nina! The police are here to arrest you.”

The detectives look at her crossly, but before they have time to say anything, Nina pokes her head through the kitchen door. “Arrest me? Whatever for?”

The older detective, a rotund man with gray heir and several days’ worth of gray stubble, turns towards Nina. “Are you Nina?”

“Yes I am. Who are you?”

“I’m detective Lax. I have a warrant for your arrest on suspicion of computer intrusion at the Smart Home office the day before yesterday. Where were you in the evening that day and can anyone corroborate?”

“What do you mean?”

“Do you have an alibi?”

“Wait, what? Why would it matter where I was when the intrusion happened?”

“Just answer the question, miss.”

“No, I don’t have an alibi. Robin, can you help me get a lawyer, please?”

“Of course.” She takes out her phone and aims its camera at the police officers. “Smile! I’m taking a photo so that the lawyer can identify you later.” The phone makes a shutter sound.

The older detective turns towards her. His face is contorted. “Hey! You can’t do that! Delete the photo at once!” He tries to grab the phone from Robin. The younger detective puts his hand on the older one’s shoulder. “Sir, I don’t think you can demand that. We don’t have the authority to do that.”

“Damn these times. When I was young…” He stops abruptly in the middle of the sentence. The younger detective turns to Nina. “I’m afraid you’ll have to come with use to the station now, miss. Do you need a jacket or something?”

“I’ll come along. I’ll be just a minute to get my coat. Robin, send the lawyer to the station, please. I’ll leave my bag here.”

The younger detective shakes his head. “We’ll have to take the bag with us, too, as evidence. And your phone and laptop.”

“As the person currently in charge at the office, I’ll have to have a receipt for the laptop. It’s owned by the company.” Robin is standing with her hand in her pocket, with her phone.

The receipt is made. Nina is taken away with her stuff.

“Right. That was fun.” Robin scratches her head. “I don’t understand why they’d suspect Nina, though. Oh well. I’ll let Anna know and we’ll get Nina a lawyer.”

“Should we take Nina a care package?” Bert smiles. “A cake with a file would be traditional.”

“Let’s see what happens, first. Maybe they just want to question her and won’t keep her overnight. Don’t see why they would. It’s not like she’s suspected of anything violent.”

“All right then, miss. Where were you the day before last, in the evening, from 18 onward?” The older detective is standing at the table in the interrogation room, leaning on his fists on the table. Nina is sitting in a chair, and the younger detective is also sitting, across from Nina.

“Lawyer first. I’m not answering any questions until I have my lawyer present.”

“What do you have to hide?”

Nina just looks blankly at the old man. He looks back, his face getting more red.

“You’re behaving like a guilty person.”

Nina continues to look, being impassive.

“We opened your laptop. There was green text on a black background, for about a second, before the screen locked itself. What’s the password for unlocking it?”

Nina doesn’t move a muscle.

“Do you know suspicious that is? The whole laptop smells of a hacker. The screen colors alone show it’s used by a criminal, but also all the stickers. What’s EFF? I did a search. They look like some sort of pirate group. And there’s a sticker for the Pirate party as well. I would not be surprised if there’s illegally copied software, viruses, and child porn on the laptop. You young people think you’re smarter than anyone, and are always involved with that kind of shit. No respect for authority.”

Nina doesn’t react.

“What’s the password?”

The detective hits the table with his fist. “Dammit, girl. We can prove you’re a criminal. Only criminal hackers have green text on a black background. We’ll jail you if you don’t give the password. Now!”

Nina tilts her head to the side. “Lawyer.”

“You did the right thing, not answering any questions without me, Nina. I wish all my clients did that.” A balding, athletic man in his forties wearing a dark suit with a yellow tie sits across the table from Nina. They’re in the same interrogation room, but alone.

“Thanks. Now what happens?” Nina drinks a little from a glass of water on the table.

“We’re going to have to answer some questions, but before we do, here’s what I know so far. The police don’t seem to have any actual evidence to implicate you. They suspect you only because the staff at Smart Home told them about the stunt you pulled in that first meeting with them.”

“What? That was ages ago.”

“Indeed. However, I have to ask, under client-attorney privilege, so that I can form the right strategy. Did you break into Smart Home’s computers the day before yesterday?”

Nina doesn’t hesitate. “No.”

“Good. Then I’ll work on the basis that you’re innocent, and that the police need to be convinced that you are. If you weren’t, my strategy would be to avoid you going to jail, or avoid you getting convicted, or at least you getting a small a punishment as possible.”

“I’d really like to have a criminal record.”

“Of course. And there’s no reason why you should get any record from this thing. Like I said, there seems to be no evidence against you. In fact, the Smart Home IT people are saying there hasn’t been any intrusion. They think you’re a bit of an arrogant poophead, but they changed the wifi password after your stunt, so it can’t have been you, this time.”

“What do the police have? Do they have anything at all?”

“No. They heard about your stunt, and they find it hard to believe that Antero’s computer would’ve printed all those documents by itself. Frankly, so do I.”

“Yeah, it’d be a weird bug. But given how incompetent Antero is with computers, maybe he printed them by mistake and didn’t realize?”

“Ho hum. I may suggest that to the detective.”

“The detective is an incompetent idiot as well. Especially about computers.”

“I don’t disagree. I’ve dealt with him before. What did he do this time?”

“He says my using green on black terminal windows is proof that I’m a criminal.”

“What? Not again. Okay, if he’s that desperate, I’ll have you out in an hour or so.”

The Team’s kitchen is filled with laughter and empty pizza boxes.

“What a dunderhead!” Bert is trying to eat his last slice, but is laughing too hard to be able to take a bit of the slice flopping in her hand, in front of his face.

“I would not believe it myself, but I did some searching.” Andy is smiling, but happily takes the last bite and wipes his hands with a napkin. “It’s not the first time the police thinks terminal colors is proof of being a criminal. Campus police in the US arrested a student on that basis some years ago.”

“No, really?” Robin has almost a whole slice left. “I have trouble believing how stupid humanity is, sometimes.”

“I’m happy they let you go, Nina.” Anna is more serious than the others. “I wish they’d dropped all charges, but they wouldn’t. They’re continuing the investigation.”

Nina wipes her lips. “Yeah, the lawyer said, but he’s sure they’ll have to drop the charges later, since there’s no actual evidence. Not against me, and not even that a crime has been committed.”

Audit

Andy types into IRC. “Anna, SH devs r ask 4 PHP on our platform; we shld talk b4 resp”.

Anna is in her office, reading a sheaf of printed papers. A quiet ping alerts her that her attention is needed. By policy, she’s the only on in the Team to have audible notifications. Everyone else’s ability to concentrate on the task at hand is paramount, but Anna is the manager, outside interface, and general fire fighter, and sometimes needs to react quickly.

She turns to her keyboard, types in a password and taps her security to unlock her screen. She reads, then types. “Andy, sure thing. Come to my office when suitable. We’ll escalate to others if need be.”

In a minute, Andy walks into Anna’s office, with a mug in his hand. He sits in Anna’s visitor chair, and takes a sip, then a deep breath.

“So, here’s the sit. SmartHome opened a ticket in our issue tracker to ask for PHP on our platform. I’ve not responded yet, I figured we should discuss it first.”

Anna nods. “We’ve rejected PHP before, for other customers. It’s hard to write secure, reliable software in the language.”

“Indeed. That continues to be my opinion, and I’m happy to respond that way now, except how is our relationship with SmartHome? It’s been dicey several times in this project. Managing that relationship falls on you, so it’s your call.”

Anna leans back, and crosses her hands behind her neck. “Hmmm. Yes, you’re right. I’ll need to think about this. I’m about to go out for lunch anyway. I might take a walk and think about this. Don’t do anything until I come back, please.”

“Agreed. If SmartHome presses the issue, I’ll just say that we’re considering the request, and will respond later today. OK?”

“Perfect. In fact, add that to the ticket, it’ll buy us some peace and keep them calm.”

Anna walks on the pavement, hands behind her back and eyes on the ground. Lunch was lovely, and she’s thinking deeply. She comes to the building where the Team office is, and enters though the front door, using her key. She walks the stairs to the right floor, and enters through the locked door. The entire Team is standing in the entrance hall.

“What’s up?”

Andy speaks. “We didn’t want to disturb you at lunch, but when the downstairs door informed us that you’re coming in, we gathered to wait you. We have a situation.”

Nina steps forward. “SmartHome are upset that we’re not adding PHP at once, and are saying they won’t let us audit their software if we won’t add PHP.”

Anna takes off her coat and hangs it on a hook on the wall. “I see.”

Bert shakes his head. “That’s not all. They’re also claiming our system is insecure, with known holes.”

Nina’s head turns towards Berg. “What?”

Berg nods. “Yeah. They added that to the ticket just now. I’d already heard you start moving to meet Anna.”

Robin puts her face in her hands. “This is getting to be too much.”

Anna hugs Robin. “Let me go read the communications myself, and see what I can do.” She looks at the others. “It’s not a healthy relationship we have with them. It’s antagonistic. It’s quite far from a collaboration.”

She takes a step towards her office. “I’ll handle this. We’ll survive. You should all take a break in the kitchen. Vent as much as you feel like.”

The others look at each other and go to the kitchen. Andy puts the kettle on. Bert puts a row of mugs on the counter, and small tea strainers in each. He then starts taking jars from a cupboard, and measuring tea into each strainer. The water boils, and Andy pours tea into each mug. Bert puts milk and honey on the table, and starts putting the mugs in front of everyone. The Team members each start their own timer in their watches or phones.

Robin lifts the strainer and examines the tea, then puts it back into the water. “I’m tired of working with SmartHome.”

Nina makes a grimace. “Me too. Incompetent doesn’t cover it. I can work with the incompetent. But this company, they’re also nasty.”

Andy lifts his strainer into a bowl in the center of the table. “I don’t like the situation either, but to be fair, we started the collaboration in an aggressive way.”

Nina looks at him, with her eyebrows high. “Are you saying this is my fault?”

Robin also puts her strainer into the bowl. “No, it’s not. It wasn’t your decision to use that approach. It was mine.”

Andy nods. “I don’t think it was wrong of us. They needed to be convinced. But maybe we could’ve built a more collaborative relationship since.”

Bert gets rid of his the strainer. “I’m not sure we could have. We knew, going in, that they have a toxic culture. Brogrammers, we said.”

Robin sips some tea. “Yeah, and all that entails. They were always going to dislike bringing in outsiders to fix their mess. Us bending over backwards would only have made it harder to collaborate.”

“I know there’s some real poopheads there. But they’re not all like that. I like Nick, for example. We get along well.” Nina puts away her strainer, and adds honey and milk. “Professionally and as friends.”

Robin and Andy look at each other, and shrug. Nina stares into her mug. “I don’t understand why he works there, given the poopheads.”

Robin takes a gulp. “Remember, he’s quite young. I think it’s his first job. He’s only just graduated and doesn’t know that it can be better.”

“He’s not much younger than me. I know better.” Nina looks up at Robin. “I don’t want him to become a poophead.”

“Let’s try to make sure it doesn’t happen. But here’s the thing, you started working, on your own, as a teenager. Your had to have your mother run the business on paper, you were so young you couldn’t found a company in your own name, but you did all the real work. Found customers, built software, and so on. Then you got hired at a couple of consulting agencies, before we formed the Team and you joined. This is literally Nick’s first job. He’s never even had a summer job, or been an intern.”

“I guess.” Nina pushes her mug away, stands up, and shudders. “It’s just, I mean, he’s nice, but I can see him drifting towards the dark side. He’s starting to show macho tendencies.” Nina walks to the sink, turns on the faucet, gets her hands wet, and rubs her face.

“Not good.” Robin drinks some tea slowly. “He should get out and move to another job. But we can’t tell him that. It’d be against the contract we have with SmartHome.”

Nina dries her face with a paper towel. “Yeah. But as soon as we’re done with SmartHome, I’m having a talk with him.”

“Mmm. That might technically still be against the contract. Unless you just tell him, friend to friend, that you’re worried about his macho tendencies.”

Andy clears his throat. “Nick aside, what are we thinking about SmartHome? Is there anything good about them?”

Everyone looks around. Nobody says anything.

Anna walks in. “How are we doing?”

“I just asked if there’s anything good about SmartHome, apart from Nick. Nobody had anything to offer.”

Anna nods. “I’m starting to feel that way. I have an update. I called Sam. I told him we’re going to respond by email soon. We need to sort this out now, anyway, so let’s talk. Here’s what I suggest…”

“Hi, Nick.” Nina is sitting on a bench in the park near the Team’s office. Nick sits next to her. He has two ice cream cones and hands one to Nina.

“I’ve some bad news, I’m afraid. The guys at work are upset at you. The Team in general, and you in particular, Nina.”

“Oh?” Nina licks her ice cream, catching melted rivulets before they drop.

“Apparently you’re a bitch. And that’s the nicest term they you.”

“I don’t mind being a bitch, but I enjoy knowing why poopheads think I’m a bitch.” Nina takes a bit of the cone. “Mmm, this is good ice cream.”

“That email you sent explaining in detail why the claims that your platform is insecure were wrong, it made a couple of the guys look stupid. That’s what started the tirades.” Nick doesn’t lick, just takes bites of ice cream.

“I just held a mirror to them. They were looking stupid already, but they didn’t see it without a mirror. Looking at version numbers to determine if there’s known security holes is such a beginner mistake.”

“I agree, of course. We were taught at school to try if the hole is there, never mind what the version number says.”

“What else are they saying about me? Don’t try spare my feelings. I’m unlikely to feel insulted by your co-workers. They have been have been weighed, they have been measured, and they have been found wanting. In what world could they possibly best me?”

“Hah. Adhemar. Well, since you ask, they think you’re variously lesbian, frigid, or a transvestite. Apparently a girl can’t be as good as you are at what you do, unless they have boy genes, or aren’t having sex with boys.”

“Oh, that. Not new.” Nina finishes off the ice cream cone, the pointy end of the cornet. “Still, shows they’re not just poopheads, but stupid. Macho poops often are.”

“Yeah. I told Sam as much.”

“Well done. I knew I liked you for a reason.”

“And then I resigned.”

“What? Seriously?”

“Yeah, I’ve not enjoyed working there for a long time. They pay well, and it’s nice to work on products that a lot of people use, but the culture isn’t a good fit for me. I think toxic is the word.”

“Good boy.”

“Uh, and that reminds me of something I’ve been meaning to bring up. I like you too. I like you much more than I would’ve ever expected. I really enjoy all our chats.”

“I’m glad to hear that, but…”

Nick raises his hand, showing his palm. “Wait. Before you say anything, I need to finish. I like you, I enjoy spending time with you, but… but I don’t like you like you. I’m not attracted to you. Sorry.”

“Oh, good. I was just going to say the same thing.”

The two look at each other.

“Well, that’s not how I expected this to go.” Nick tilts his head. “I’m not offended, but I’m curious. Why aren’t you attracted? Am I unattractive? Repulsive?”

“You first. I’ll answer after you tell me why you aren’t attracted to me. Wait! I’ll text my reason, and you’ll say your reason before reading the text.”

Nina takes out her phone, and types quickly with two thumbs for several seconds. Nick’s phone plays a few bars of the Imperial March.

“The reason I’m not attracted to you, and I’ve not told this to many people ever, is that I’m gay.”

Nina nod. “Read the text.”

Nick raises his phone and pokes at it. “Oh. You knew. How did you know?”

“Small things. You never look down my blouse or at my ass when I bend over in the lab. You might just be very well brought up, but even well brought up boys do that when they think they aren’t being observed. The lab has hidden security cameras, and I checked.”

“Oh. Well, I am gay, but nobody else has ever guessed. I only came out to my parents a couple of years ago.”

“How did that go?”

“Very well. They accepted it and me right away, and have been quite supportive.”

“Glad to hear that.”

“It’s one more reason to leave SmartHome. The guys there keep making crass jokes about gay people.”

“When is your last day? I mean, I’m glad you’re getting our, I don’t think it’s a good place for you, or anyone, but I’m sorry to lose an inside contact.”

Nick smiles broadly. “Today, in fact. I’m not going back. Sam was very understanding, and I’ve not used any of my accrued vacation, so I made a deal that I’m garden leave for a month, and they won’t need to pay me for unused vacation. Also, I won’t raise a ruckus with the union about the way gay people are treated there.”

“What will you do next?”

“Well, I’m in a good place financially. I’ve some savings, and my parents are quite well off, so I don’t have to find a new job at once. I’m going to be looking carefully. I like how the Team looks, but since I can’t join you, due to my employment contract and your contract with SmartHome, I’ll look for somewhere else that’s nice.”

“Yeah, I was going to say that we can’t hire you, unfortunately.”

“Aye. I took a semester of contract law and one of employment law in school. I figured it would be useful to know that stuff.”

Anna types leisurely. “Good new, team. I had a lunch meeting with Sam. We still have a customer, and they’ve agreed in writing that there will be third-party security audits of both their devices, and separately of our platform, and they’re paying for that. We can continue work, and also, I think we are seeing the end of the project looming. We’ll pull through this one yet.”

She clicks the send button, then turns to face Robin, who’s sitting in the visitor chair. “How are you doing, Robin? I’m a little worried, you’ve seemed a bit on the edge, lately.”

Robin doesn’t move a muscle. A moment goes past. “I’m coping, but it’s been hard. Not just work, but some other stuff as well.”

“I’m sorry to hear that. Do you want to tell me about it?”

“You know I’m involved with some free software projects in my free time? It turns out that one of them has some unpleasant people that I don’t want to be associated with.” She sighs. “See, there’s a diversity statement, formally ratified by voting. It says we no matter how you identify yourself or how others perceive you. Now a RUDE WORD poophead claims that means we must accept Nazis. Actual, literal, card-carrying Nazis.”

“Oh. That doesn’t make any sense.”

“No, it really doesn’t. But there’s a few members who agree, the usual suspects when it comes to stirring up trouble. It seems every big project has them. There’s also a bunch of outsiders, baiting and trolling us.”

“Are you coping?”

“I am, for now, but I’m getting tired of having these arguments. They keep getting repeated. The project has an arsehole problem: it doesn’t know what to do with extra ones. I’d like to just kick them out, but it’s hard to build consensus on that.”

Anna stands up. “Hug?”

—————————————————————————–’

Bert stops typing. “Well, that’s new.”

Andy looks up from his screen. “What?”

“On the SmartHome IRC, someone just said they’ve started liking the CI we set up for them.”

“Oh? They’ve not been positive about it before. They’ve complained it’s picky and slow.”

“Yeah, and someone else said they also liked it. It seems to reduce bugs that get merged.”

“Maybe there’s hope for them yet.”

Announcement

Some weeks later, Anna is in her office, typing. “Good news. Sam just emailed me that the initial responses from big resellers on the new product version are quite positive. The first actual reviews in blogs and the press are expected in a week or two. The first impression reports are all good.”

She adjusts her sitting position. “Sam invites us all to a celebration of the product launch tomorrow and also a retrospective discussion of the project. I need to go, but it’s optional for everyone else. Who wants to join? Let me know by tomorrow lunch time, and I’ll let Sam know who’re coming.”

Anna keyboard away, and stands up. Robin knocks on her door jamb. “How’re things?”

“Did you see what I said on IRC just now?” Anna takes her big tea mug from her desk and starts walking towards the door. Robin takes a step back.

“Yeah. I guess I’m. Hopefully it won’t be another ambush.”

Anna shakes her head as they walk together to the kitchen. “No reason why it would be. But if it is, that’ll be the end of our relationship with SH.”

“Yeah. I don’t think we can take another crisis. Not even if the last several weeks have been smooth.”

Anna fills the kettle with fresh, cold water. “Exactly. Our bruises are still visible. But we can have some bubbly and some cake, if nothing else.”

The open kitchen and lounge area of the Smart Home office is crowded. People are talking, not loudly, but enough that the general impression is a cacophony. People are standing in groups of a few people, holding champagne flutes and small paper plates with cake, trying to drink, eat, talk, and not drop anything.

Sam hits his glass with a metal spoon. “Hear me, hear me! It time for a speech.” Soon the hubbub quiets down. Sam moves to the side of the room with a projector screen that everyone can see.

“We’re here to celebrate a successful product launch. Does everyone have something to drink? Go ahead and get something, I’m going to propose a toast in a moment.”

Several people shuffle to the kitchen counter, where a couple of bottles of champagne are standing next to a half-eaten cake. Sam continues talking.

“This is an unusually important product launch for us. You all know that. Even though a year ago we were reluctant to admit it, we were in deep trouble. The version of our product back then was not in great shape. If the launch of this week had not gone well, we would not be celebrating. I’ve spoken with our primary venture capital investors earlier today, and they said they were ready to pull the plug if this launch didn’t go well. But it did! They’re not pulling the plug on us. In fact, they’re talking about wanting us to do another round of investment so that we can grow fast again. Cheers!” Sam raises his glass and takes a sip.

Everyone applauds, raises their glass, and takes a sip.

“I am not ashamed to admit that we could not have done it without the Team! Despite some friction, we all worked together to build a great product. To the Team!” Sam raises his glass again and takes a sip.

There’s a short hesitation, but then applause and glasses raises and champagne is sipped.

Anna walks next to Sam and looks at the crowd. “On behalf of the Team, I also wish to make a toast. Like Sam said, we worked together, and we built something. Hopefully we can work again in the future. To the Smart Home 3000 system!” She raises her glass and takes a sip. There’s applause and glasses are emptied.

Sam raises his hand. The noise abates. “In other news. There’s news about Antero as well. The police have finished the investigation and the public prosecutor has indicted Antero for fraud. The police say there is hard evidence for fraud. It seems Antero has been lining his own pockets for years at several companies and would have done that at Smart Home as well, but did not have time for that. As it stands, the prosecutor is asking for five years in prison.”

Someone claps a few times, but then goes silent. It’s an embarrassed silence.

“The police have also concluded that there was no breach of Smart Home office network and that either Antero accidentally printed out all the incriminating documents or there was a freak malfunction somewhere.”

A shout is heard. “Yeah! That’s what I’ve been saying all the time.” It’s the head office IT person. “There’s no way our office network could be breached. We have good security. I set up the firewall myself.”

The Team has gathered in the kitchen in their own office. Robin sits in a chair and has her feet on the kitchen table. Other people are sitting or standing. Everyone has a tumbler with some brown liquid. There’s a bottle of expensive whiskey on the table.

“RUDE WORD I’m glad to be rid of that bunch.” Robin takes a gulp and makes a grimace, then coughs. “My, that’s a bit strong.”

Anna leans backwards against the wall. “I’m glad the project is over. I hope we don’t need to work with them again, I do, but I tried to leave that bridge intact. No point in destroying it in case we desperately need a client again.”