diff options
authorLars Wirzenius <>2017-02-01 13:22:53 +0200
committerLars Wirzenius <>2017-02-01 13:22:53 +0200
commitdfefaf5bb75858e5beb9268817f3d784ea2459c5 (patch)
parenta2d9cff898f0122377290b5770495597b1acb580 (diff)
Add new chapter
2 files changed, 773 insertions, 0 deletions
diff --git a/devsetup.mdwn b/devsetup.mdwn
new file mode 100644
index 0000000..77abb13
--- /dev/null
+++ b/devsetup.mdwn
@@ -0,0 +1,772 @@
+# Development setup phase
+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 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 on making 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
+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
+"I see. Very well. I'll what 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
+"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 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, Lundia
+shelves, cupboards, chests of drawers, and other storage.
+Part of one wall is covered by a board with hooks for tools.
+There are a lot of tools hung on the board: every
+conceivable sort of screwdriver, hammer, pliers, knives,
+even an axe and, most curiously of all, a half-meter long
+rubber baton, and a 20-pound 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 spar 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 startles, 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, the
+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? A re
+you being sarcastic?"
+"No, Miss Nina. I don't want to anger you any further."
+"Good boy." Nick smiles.
+"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, Miss Nina. Would you like me to do it for you?"
+"No, thanks, I need to know 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.
+"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, go ahead."
+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
+"Oh dear. You should probably be told that the lab is Nina's
+special place. She's spent months of work time setting it
+up, and it's where 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
+"Well, she did shout at me to sit on the floor after I was
+"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
+Nick gets to the lab door, which is standing open. He
+politely knocks on the door frame. "Miss 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 plus in
+cable end 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
+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 kernel build 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 build 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 this hard."
+"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 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
+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 do 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
+worries, 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 if call
+Andrew 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 goodbyes. They're gone before 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 be sarcastic at them."
+To upstream changes means to send your changes to the person
+or project who maintains the code in public, and get them to
+include 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
+"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 has left. 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
+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 a
+cupboard, and sits down at the kitchen table to feat.
+Nina doesn't not usually care much what food she eats, but
+when she finishes a build or other project, she celebrates
+with her favourites. It's always the same Vindaloo, from the
+same takeout restaurant, and with a liter of cold milk to
+becalm 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 build
+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 Andrew
+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 Germanic font. She
+punches a key combination, and the printer in corner of the
+lab spits out a few sheets. Nine gets the sheets, which turn
+out to be A4 sizes 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
+you questions 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 Internet good 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
+servants bedroom in prehistoric times. Andrew and Bertram,
+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
+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, 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 a local copy 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
+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 to 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
+"Good, that's what I want to hear. While we do not track
+work hours here, we do not ever want to see someone burn
+out. I and Robin have both done that at least a couple of
+times each, and we won't let it happen to anyone in the
+"So I don't want to see you working at all before Monday,
+"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 big 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.
+By 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
+sufficiently 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 it 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
+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 Indian food, curled up under a blanket on my
+couch, with my cat purring in my lap, or on my shoulder.
diff --git a/index.mdwn b/index.mdwn
index 951ecbe..84f0a87 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -18,6 +18,7 @@ Ther may be contradictions. Retonning in the future is possible.
# Chapters
* [[Negotiation]]
+* [[Development setup phase|devsetup]]
* to be continued
# Change log