I (Heart) Books

When I was young, I used to be addicted to virtual worlds, spending every waking moment in worlds populated by Orcs, Elves and Aliens. Except when I grew up, virtual worlds were called books.

A good day was reading two books; a great day was reading three. And a perfect day was avoiding conversations with anyone 😉

Good books are good friends, expanding your mind and providing new vistas and memories, time after time. You can geek out with old friends and a favorite turn of phrase when revisiting an older story, or take a short holiday in a new book; be a stranger in a strange land.

Even when times were tough, my mom would take me down to the used bookstore each month, where I was allowed to fill a single brown grocery bag with tattered but beguiling goodies. Optimizing for books in terms of size and shape resulted in a pretty odd tangle of reading material! But once I discovered The Hobbit, Tom Swift and Heinlein, it was all over: the wonders of science fiction won out over the size of the books, with a slight seasoning of fantasy to fill up the corners.

You don’t get out much when you live on a maggot ranch, so reading books and riding horses were pretty much my only entertainment there. But university changed everything for me. It taught me that girls existed, computers could be taught to play games, and that there was more to music than Disco. I’d drag in my big speakers from home and we’d crank code on the late shift, powered by chocolate-covered coffee beans, chai tea chats and classic albums from my fellow coders. They’d taken pity on my sad lack of musical knowledge and taught me to love music: Celtic to Classical, with Miles Davis, Pink Floyd, Cowboy Junkies and Gregorian Chants in between.

But even with all this new entertainment available, books remain a big part of my life. Enough so that I am finally trying to write a few of my own! I co-authored a textbook on building online video games a few years ago, and have a second textbook underway. Most of my free writing time is going into alternate history, science fiction type books; the research and plot development have been thrilling to do, but dialog and character development have proven quite tricky so far. If this were a work project, I’d just look up the answer, but figuring stuff out is half the fun for a personal project, so I’ve been re-reading dozens and dozens of books — good and bad — trying to distill what makes a book good. Bit by bit, I am getting there. Most of the stories on this blog are writing exercises of one form or another. It was quite difficult to start, as I am a very — probably excessively — private person and I don’t like exposing anything on what I think. But over the years I’ve gotten less bad at it. Doing conference lectures was a big help. They make me dig deep into a topic and figure out how to communicate the essence without overwhelming in detail.

Fishing with dad: a story I wrote for Father’s day.

Kootenay is a massive lake with, back then, mostly deserted shores or camping, and spectacular skylines!
Kootenay is a massive lake with, back then, mostly deserted shores for camping, complete with spectacular skylines!
Kootenay has many different types of stunning views, and the height of the mountains around the lake bring snow into the summer view!
Kootenay has many different types of stunning views, and the height of the mountains around the lake bring snow into the summer view!

Dad and I would go out to Kootenay Lake, three or four times a year; a six hour drive to reach the deep valley lake. It was over fifty miles long, with very cold, very deep water, set amid the beautiful Rocky Mountains of British Columbia.  And best of all perhaps, most of it was completely isolated. We would throw enough food into the boat for a week in the summer, and camp on isolated sandy beaches tucked in amongst the rocky coves. We got skunked five years running in terms of catching a fish (we were only after the big ones that lurk in the deep waters), but the user experience was amazing! We would build a nice fire out of driftwood and toss spuds jacketed in tinfoil into the embers. Using a giant granite boulder as a heat reflector, we’d grill some steaks, broiled in butter and chill with a bottle of orange liquor from his still. It’s dark enough and high enough that you could see the satellites moving overhead, and the Milky Way becomes actually just that: so many stars that it looks like a solid stream of light. And the occasional Aurora Borealis as well. Dad would say “there are people that would pay a million dollars for this experience”, and then we would both chorus “so please introduce me to one, so that I can retire!”
Kootenay Lake is big enough that it doesn’t freeze over in the winter, so we hooked the boat up as a cabin cruiser. We’d head out a little after the crack of dawn, dad with a case of beer and me with a case of books. Then we would set out Velveeta cheese and crackers, with our favorite Ukrainian sausage, on the table in the middle. And we would pass the day in companionable silence while the stacks of beers and books went steadily down.

The fishing war was finally won one rainy winter day. I had cream of mushroom soup and hot dogs broiling in front of the propane heater we’d use to keep warm while winter fishing. One of the rods we had out began clanking in its holder, a complete change from the established practice. Dad and I looked at each other, puzzled, as the clanking continued and the reel began to buzz. After an appalling number of seconds, we came to the same realization: the first fish strike in five years!
We both leaped for the rod to get the situation under control, but we had delayed too long. It was an old-style reel that had managed to tangle itself somewhat as the fish jerked the line back and forth. Finally dad grabs the reel and started to unsnag it while I frantically stripped line in by hand to see if the fish was still there, and ideally, keep the hook tight. And there were a few jerks back and forth of the fish trying to shake the hook, so it was clear we still had a chance. Dad finally gave up on the reel and started stripping line himself, but we lost the fish. Dad started cursing up a storm as he shifted into high gear, restarted the boat and started zooming back in the direction from which we had just come. He was convinced the fish was still there, and with our down-rigger set up, we could keep the same depth and hopefully troll right back through his hunting zone. Given the gigantic size of the lake overall, and the hundreds of feet of depth that the fish could choose from, plus the fact that the fish just had a hook in the side of its mouth to make it a little wary, it seemed to me our chances were pretty low. But dad was right!

Less than ten minutes in we had another big strike, and this time, we were ready for it. We ended up pulling in a 12 pound Dolly Varden; a salmon variant. We had that sucker filleted and broiled in butter 30 minutes later, steak style. And that was one damn fine dinner!
Ice fishing was similar in concept but different in practice. Normally, you drive your car out onto the frozen lake’s surface, drill several feet through the ice and drop a worm on a hook into the hole. Then you either huddle miserably on a stool out on the ice, hoping to get lucky, or you jump back in the car and huddle miserably there, again just hoping to get lucky. Dad wanted to take advantage of the time window in the winter fishing season where the ice was too thin to support a car, as well as improve the odds on actually catching something. So he came up with the Super-Duper Snoopy Shelter, a collapsible shed that formed a sled when it was collapsed, so it was incredibly easy to hand-tow across the ice. Once you reached a good spot, you just pop it up! It used black plastic sidewalls to keep the ambient light out and the heat in, with a couple of holes cut through the floor ready for ice fishing, and room for a propane heater in the corner. Once we had augured through the ice, we would pack snow hard around the sled’s edges and the open spots of the floor. Dad wanted to be able to see down into the water to see how the fish were receiving our different offerings, and tune as required!

Other great fishing holes of ours include Buck Lake, set in some beautiful wooded hills. It was so quiet from the no-motorboats rule that I didn’t mind rowing for hours at a time to troll the damn hooks!  We should have spent more time at the Kananaskis Upper Lakes. Sheer cliffs line the shores, with mile after mile of deserted horizon views; simply stunning. A little dicey on the road to get there with the family sedan. We used the car more like a truck, hauling boats, often on mining truck back roads, so the city suspension and body width were sometimes problematic! But I remember the most about White Swan Lake; very isolated and deep in the mountains. Similar cliffs to Kananaskis, but smaller and more wooded. We’d stay in old log cabins at the lake, cooking our catch over wood burning stoves, or in Skookumchuck, where dad had an old Chinese chum who taught us how to say the equivalent “I’ve got a fish on the line!” in Mandarin.

Upper Kananaskis Lake: I love being above the tree line!
Upper Kananaskis Lake: I love being above the tree line!
White Swan Lake still had the treeline look I love, but with softer wooded areas and a more cozy feeling than the Upper Kananaskis.
White Swan Lake still had the treeline look I love, but with softer wooded areas and a more cozy feeling than the Upper Kananaskis.
Natural Hot Springs by White Swan Lake! The old ones were in a dilapidated mining era shack, accessible only by this crazy steep and narrow path down a cliff face.
Natural Hot Springs by White Swan Lake! The old ones were in a dilapidated mining era shack, accessible only by this crazy steep and narrow path down a cliff face.
No motorboats at Buck Lake meant a lot of rowing for me, dad's portable backup motor!
No motorboats at Buck Lake meant a lot of rowing for me, dad’s portable backup motor!
Kootenay Lake has some amazing night skies!
Kootenay Lake has some amazing night skies!

Guerilla Gardening

One of my best guerrilla gardening projects, on a major bike & walking trail.
One of my best guerrilla gardening projects, on a major bike & walking trail.

The upkeep time — a critical metric in GG — was minimal, as these are California Poppies: a native, drought-tolerant wildflower. It only needs a bit of help to compete against imported grasses and weeds. This patch started as just a few scattered flowers. I invested a few 5 to 10 minutes sessions, in winter and spring, to cleaning out the weeds. Once blooming, a few minutes each week dead-heading poppies keeps the bed looking great for several weeks. And by incorporating the time into a stretching break in a bicycle ride, the overall time hit was small and working with flowers is a nice break on a ride! People walking by really liked it. Not enough to stop and help right then, but I decided it would make a great community project: getting people to adopt small parts of their favorite trails.

Ultimate in Hawaii


Sometimes people get bored on the sideline of an Ultimate Frisbee game and need to do something with their hands 😉

This was at the Kaimana Klassik, a high-level invitational tourney in Hawaii. Simply incredible: beautiful, fun atmosphere and great players! The fields are in a partially collapsed caldera and mere steps to the beach: a state park that you camp in for the Klassick. I had worked hard on my throws for months in advance: you just don’t want to shank a shot in front of the world-caliber throwers who come to play and party at the Klassik! I almost goobered it though: taking a few hours of surfing lessons a few days before the tourney began seemed like a good idea at the time. But the constant paddling put an odd strain on my shoulder, my throwing shoulder! I had to bail out of the surfing lesson after a couple of hours to make sure I could still use the shoulder. My instructor got a little ticked off at my wimping out, but when I explained the situation, he got it and very kindly offered to take me out again after the tourney.
I was on the Spirit team: random players coming without a team. The Spirit team usually gets hammered by the tough competition, so I got to gamble more on long throws than normal to get the disc past the well-designed and well-executed team defenses. I made my only two called shots: two full field hucks, right off the pull, end zone to end zone. One was easy; a straight catch the pull and throw in the same motion. We caught them napping and my receiver was past their last man with a few steps to spare. Sometimes, just when the disc leaves your hand, you can feel that it’s perfect. This one came out as a real frozen rope, just zipping down the field, flat as a pancake, bang on target. A sweet, sweet feeling, and an easy catch.
For the second called shot, we knew we couldn’t pull the same wool over their eyes, so I took the pull and threw a slow & steady type pass up to another handler at the twenty yard mark. We had a couple of curl cuts to suck in the defense a few steps, and after one fake up field throw, the handler zipped a fast one back to me. Our fastest guy took off, sprinting down the right sideline. To give him a few steps advantage over the defense, I had to throw it before he made his cut, so he needed to know the where and when in advance. I told him I’d send an inside out backhand down the left sideline, pulling the defense further out away from him, and then curve it deep into their end zone, targeting the middle to give both of us a bit of wiggle room.
The defense forced me to release a little early: I was worried I might have overshot him and anxiously redid the intersection math over and over as the receiver motored down the right sideline while the disc zoomed down the left sideline. But he had great wheels and pulled a sharp curve into the middle once he reached the end zone. And zap! The disc curved in from the other side and hit him in the belly, at a dead sprint, 75 yards away. I kinda had to grin at that one: it’s a low probability shot that you’d miss more often than you’d make. But when a world class thrower mutters “good shot” as we walked back to setup again, you can’t help but feel good 😉

All the practice time was paying off. When we picked up a few new players for the last day, I overheard our captain tell them that when Larry had the disc, they should just cut to any open space: he could hit them anywhere on the field. Then the captain started to walk away, paused thoughtfully for a moment, walked back to the new players and emphasized “and I mean anywhere”; a great feel-good moment for me!

If only I hadn’t broken Michelle’s toe, just before the first game of the first day, it would have been a great weekend!

But she crammed her foot into her cleats before the toe swelled up, played hard all day and then danced hard all night. She was truly radiant with her happy, happy smile and exuberant love of life! She was also smoking hot in a bared-back, peacock-themed top I had picked up for her: “knuckle-bitingly hot” as a friend described it. Several times. 😉  And so the weekend turned out to be pretty nice after all!

Our nifty SF Mission Loft

We’ve always wanted to try a loft place. Michelle found this ground-floor, New York loft-style building — with a killer garden space — in the Mission district. It is a converted photography studio with lots of natural light and high, bright ceilings! But because it is scheduled to be torn down next year, Michelle got an amazing deal on the rent, giving us a low-cost way to explore this part of San Francisco and decide if the area is worth the nose-bleed pricing 😉 Update: the city has ruled that this pre-Earthquake building is historic! Turns out it was a gymnasium for an acrobat group, which partially burned down in the Great Fire, then the remaining part became a German community center. So our landlord has to keep the building intact, but he can add a second floor.
Michelle’s keystone requirements were: an easier, rail-based commute to her land conservation gig in Palo Alto; more accessible closet space; and the biggest one, a chance to do something new. She obsessed over the planning like me over a GDC talk 😉 Our policy is whoever has the hot hand in design, and/or is doing the heavy lifting, gets to drive, so the inside work is all hers. I got to obsess over maximizing the usability of a SF-sized garden which was in sad, sad shape. My requirements were simpler: I wanted to check out the livability of the area and have bicycle-commute distances to new jobs and rail centers.
   entry way
Pictures and descriptions are on Facebook: Mission Loft

An old poem, for an old flame.

I used to dabble in poetry, but much of it was too maudlin to deal with, so I started to focus on fun stuff, like Ultimate Frisbee rhyming cheers, or limericks.

This my last ‘serious’ poem, from 20+ years back, for a proto-girlfriend’s birthday. She was having issues about the big 3-0 birthday for athletes; it was hitting at the same time her knee was giving her recurring problems. This is the moment you intellectually realize you’re on the wrong side of the bell curve for sports, and don’t know what to do about it. I had hit the same wall earlier,  multiple times from multiple injuries at multiple ages, so I wrote this advice.

As time grows long and wines age true, when lovers laugh and lives renew.

Your day at birth is brought to hand, and heavy weighs time’s dreaded sand.

But if heart and soul combine their will, then the body must its role fulfill.

So Carpe Diem! Seize the day! Follow your heart and let come what may.

Perhaps this was overkill for a birthday card, especially that early in our very tentative relationship 😉 But when I’m in, I’m in all the way.

A Surreal Cab Ride at GDC

So we’re heading out from the convention center, popping up to The Stinking Rose, a garlic themed restaurant in North Beach, to celebrate a great GDC showing. The driver starts off, and innocently enough, asks if we’re in town for a convention. When we mentioned games, he started going off about how games were ruining children and society. From his rant and appearance, this guy looked to be a gold mine of ‘far end of the bell curve’ sample data; a type of fellow I rarely get to use as a data source. I challenged his view on games. He was receptive when I pointed out people were playing more games and reducing their TV time, and that games were a social interaction event versus the solitary experience of the television. But he then got on the ‘computers in general were bad’ rant. I asked him if he had a computer and to compare his TV time versus surfing around on the web. He looked pensive and shrugged “alright, fair enough. I spend a lot of time surfing around, and I learn a lot each time.”
Now that I knew I had an interesting person to talk with, I was concerned about the short interview window; the restaurant was perhaps 15 minutes away. So I started digging in with some questions. He tended to ramble a bit on his answers, so as soon as I had what I needed out of one answer, I would politely cut him off and throw in the next question. It was a ton of fun! I learned a lot and the guy seemed cool; overall, fantastically successful cab ride. So I over-tipped him, we smiled and shook hands and I turned to the two guys I’d ridden up with, as the taxi drove off. Kris stomped his foot on the ground and said “Oh my God! That was the most terrifying cab ride I have ever had!!” Brian explained matter-of-factly, “I thought we were going to die. Several times.”
I was quite surprised, pulled back and looked at them. What could have been the issue? I thought it was a great ride, one of the best ever.
Kris said, “Well, I was a little worried that you would get us killed by challenging this crazy guy’s worldview, on his turf. But you convinced him that he was looking at the problem the wrong way, and I started to think we’d get out of there alive.” Brian interjected with “but the real problem was that he was a totally insane driver.” Brian continued, “then I saw you drop into scientist mode, and I knew it was all over.”
I knew immediately what Brian meant. I live for that sweet spot when you are totally immersed in a problem. And it’s true, sometimes I lose track of time and space, but I was shocked that the three of us could’ve had such a radically different experience in the same cab ride! I pressed for details and they rattled off incident after incident: driving through lights; driving through stop signs; driving without hands; driving while eating; driving while turned around in his seat and talking to me, etc. They had a pretty extensive list of some pretty valid complaints!
I paused and went to the mental videotape; slowly stepping through the cab ride conversation, and trying to observe the situation, not just the data. And sure enough, the guy was completely whacked! He had a big Styrofoam container of noodles that he would hold in one hand, while driving with one knee, and using the other hand to scoop noodles into his mouth, all while speeding down the already crazy streets of San Francisco. He would also do this while turning around and looking at me, regardless of the current traffic situation!

To help deal with this sort of problem (zoning in and missing what is going on around me), I have a little helper thread to track the overall environment; the only tricky part is remembering to feed it cycles frequently enough to catch such problems! As a little test thread, I’ve been forcing myself to take a guess at the current time, then I check the clock to see how close I was. After several months of this, I can now reliably feed background processes — at least, some of them — even when immersed. And it has also improved my tracking of time in general, leading to a much improved on-time behavior!

Accidental overdose: community involvement

When Michelle and I were living in Arlington – we bought our first house and moved in together – I accidentally got involved in community improvements, and learned a lot of very valuable lessons. We had bought a house on the street that had the occasional speeder going through, making it very loud and a little dangerous when they did. The dips in the road restricted visibility considerably, and you could easily come over the hill at high speed and find somebody in the way with very little time to react. My neighbor told me there was a neighborhood improvement plan that was proposing a stop sign, or a center median, or something to slow down the high speeds on our street without overly restricting normal speeds. The idea sounded very sensible to me, so when he asked me to come to a community organization meeting to look at the proposal, it was a no-brainer to say yes.
It was a very odd meeting. A handful of people took forever to very boringly go over some minor changes to the proposals. I was shocked when the president said that they could probably get a revised version of the document out in just a few months time! We’re talking like a very few edits of a very unsubstantial scope, and her timeframe for doing it would cause us to miss the summer funding session, pushing the projects back by at least six months. So I volunteered to do the rewrites, just to get things moving. Proposal goes in, I’m thinking things are smooth, and I get on with my life. Then the next community meeting is posted with details of the proposals, and the shit hit the fan like you wouldn’t believe.
Hundreds of people showed up, almost all incredibly opposed to the proposals, even the no cost, beautification projects! It turned out the community “leaders” hadn’t bothered to ask any of the residents what they thought of these proposals! There was the usual assortment of change-is-bad folks but most had some pretty valid points. For example, a proposal that I thought was fine would have directly affected a dozen homes, and the proposal had been written without their knowledge or consent. The pitch sounded innocuous: convert an abandoned alley way into a walking path. But the alley had been abandoned for decades, and almost all of the houses had adapted their landscaping and fences to use this open space. Granted, it wasn’t their open space to use; the land belonged to the county. But you can’t slap something like that in as a surprise to people. At least, not if you want their support.

Side note: a similar issue ironically occurred in our Walnut Creek neighborhood. The city planners had quietly decided to tear down some open space and put in some high density, low income housing, and had gone considerably out of their way not to allow the neighborhood to find out. Fortunately, Michelle and I had been through the problems, similar problems, and Arlington, and knew how to engage our neighbor’s outrage into an actionable plan, and the rogue city planner ran into a buzz saw.

But back to Arlington. The community overwhelmingly voted no to the proposals, and things were looking grim. Arlington had opened up considerable funds for community improvement, as long as they got community buy-in to the proposals. Everything was now at risk because the community association hadn’t gotten by in from the community before hand; they sprung it on everybody, all at once. So long story short, I ended up becoming president of the Civic Association, teamed up with the irresistible energy force of a displaced New Yorker, Lewis Bromberg by name.

Lewis had recently moved into our neighborhood, a few houses down the block, and right in the zone where Waverly Hills transitions from a nice set of suburb housing to some pretty Third World housing and a small commercial strip. Lewis was on board with the notion of community improvement, but by no means was able to knuckle under to a flawed plan put together by flawed leadership. He somehow drafted me into helping out, and between the two of us, plus some key support from a few other people in Waverly Hills, we completely redid the community improvement plan, pretty much from scratch. Shockingly, it turned out that asking people about what they would like to see in their community was a much more successful approach than coming up with a plan and surprising everyone with it. And when we delivered the new plan to the Civic Association meeting, again with hundreds of people attending, it passed with overwhelming support; 90% plus. We not only structured the plan around ideas generated by the community, we phased the developments in tune with changes to project funding structures we knew were in the works from the county. And with surprisingly little effort to me – Lewis did by far the most leg work of anyone involved – we were able to pull in over $3 million in government funded projects to improve our community. Anywhere from colonial style streetlights, infrastructure improvements to the local park, or traffic calming measures on the major streets. One potential drawback of the plan really concerned Lewis and I: there was a lot of legwork involved to make a project happen, both at the community level, and at the county level. And while we were willing to invest the time in a few starter projects, there was no way we were willing to do all of the work, all of the time.
To make it scale better, we redid the proposal to require all new projects to have two block captains involved, located in the affected area. The block captains were on the hook to get local buy-in to potential improvements, not us. Then we’d help them bootstrap the project with the county: which department to apply to, what they’re looking for, how much is potentially available, etc. Essentially a primer on how to make a project happen. Then the block captains would take over the legwork from that point, pushing things forward with the county. It was this organizational scalability that allowed us to tap into so much county funding.

Arlington County loved the approach. In fact, they took our proposal and made it the baseline standard for other communities looking to get involved in the programs!

TDD project summaries (KIXEYE & EA)

I recently spent two years at KIXEYE, building a test engineering group and integrating automated testing into every game team. Significant improvements in development time, scalability and operational cost/quality were directly attributed to the load-testing work I led, driven by metrics for the engineering, QA, producer and executive teams.
After the initial success wave of KIXEYE, operational costs skyrocketed and server failures during peak revenue hours became commonplace; the infrastructure and development processes simply weren’t scaling. The KIXEYE executive team issued a priority one mandate to implement load testing tools and test-driven processes for all titles.
To staff the testing team, we set up intern programs with several schools and hired the best interns out of each batch into our QE group, where we trained them in load testing, application metrics and how to work with each game team. We then embedded these QE engineers into each game team, working with the game teams to establish priorities and continuing to run daily scrums for mentoring purposes and fine-tuning direction.

This approach overcame each game team’s strong initial resistance to load testing: engineering decisions and launch decisions became largely driven by results from the automated tests and embedded performance metrics probes. We then grew the work into performance testing for mobile and web clients.
A quite interesting project for me was Robbie; a friendly front-end to the Maxis automated testing systems. After the success of automated testing in The Sims Online, building a second-generation system, integrated into all teams, became a top studio priority. We first tackled build stability, performance and finally content regression for the studio’s next major release: The Sims 2.0. By embedding myself into the Sims 2.0 team, we found tremendous opportunities for turning test and measure tools into task accelerators for the content team, and by aggregating performance statistics into an executive level dashboard we were able to help focus engineering resources and provide clear cross-team communication. For example, the studio head had been able to start a non-confrontational, very directed conversation on performance, as shown in this simple email: “I see on the dashboard that your frame rate is not where it should be at this point in your project. How are you planning to address this risk in the remaining time before launch?”

“I feel the need, the need for speed!” the value proposition for rapid II cycles and metrics-driven development

The key to success in building any game is how quickly a team can see a game in action, quickly evaluate the state of the players and the state of the game, and quickly react to the new information.
The key to success in online games is to quickly repeat the above evolutionary cycle, over and over again, without significantly damaging what attracted and retained your existing customers, or significantly damaging your platform and brand, while adding material to attract and retain new customers and finding new ways to make money, all while players continuously do the unexpected and vultures show up to pick at your established customer base. All of these constraints are difficult individual problems. Combined, they present an incredibly difficult problem.
The barrier to success is achieving the required development speed, visibility and flexibility in the multiple-dimension complexity of online games. New, continually shifting problems require more than just new solutions, they need a new way to solve them, over and over again. And with the development speed, scale, complexity and longevity of online games, your business needs game production tools, metrics and agility more than ever before.
Introduction, 1.1: A Darwinian shift in what games are requires a similar shift in how we build them.
Online games are the most intriguing shift in media since we first learned to scratch on cave walls. A product oriented industry is migrating to service business models that rent persistent, continually evolving virtual worlds, populated by studios and customers alike. You’re trying to attract and retain long-term customers, not point-of-sale customers. A service-oriented business has different cost and revenue models than packaged goods. Further, players require the flexibility to explore their own paths, build relationships and expand the shared virtual world. The more bonds players have to your game and to your quality of service, the longer you retain customers and the greater your revenue and the better your chances of expanding your customer base. These shifts in the relationship between the players of games and the producers of games change how we think, what our business goals and priorities are, and how we build software.
Online games are a combination of long-term experiments that seek and field innovative approaches to solve complex, continually changing problems:
• expanding the virtual world and the supporting infrastructure;
• exploring new types of fun;
• improving how you attract and retain players;
• improving your revenue models and lowering your recurring expenses.

That’s a lot of stuff to get right, quickly, over and over again, especially with the high quality of service required to attract and retain long-term customers.
• Your software and your processes must be designed for a continual, incremental, cost-effective growth pattern, with rapid prototyping to continually shape the growth direction and continual pushes of new content to paying customers.
• The heart of an iterative development process is the pace of iterations and your ability to see actionable results of iterations.
• Adding metrics to your incremental development cycle provides guidance in your experiments, visibility into your sources/sinks of money, visibility/predictability into your schedules and visibility into the speed, agility and stability of your platform and your processes.
Metrics are not a silver bullet in and of themselves [reference: Frederick Brooks, “No Silver Bullet”]. To meet the demanding requirements of online games, you need an integrated set of development approaches that, in aggregate, lower the cost and risk of fielding an online game service.
• Metrics point out anomalies for you to investigate or find high level, aggregated patterns of data too complex to absorb individually. Automating this triage / aggregation phase is essential to a rapid experimentation/reaction model: finding the problem area is the slowest part of debugging large, complex systems, such as gameplay, player behavior or nondeterministic servers. You need speed of analysis.
• If you can’t quickly react to what you’ve observed, you’ll be more frustrated than successful. You need speed of execution.
• To achieve these levels of agility and speed, a backlog and burn down charts just won’t do: you need your software, your tools and your processes to have ease of observation and ease of change built-in at the genetic level. You need more than process agility, you need system agility.
• Breaking things slows you down and complex, continually evolving software is easy to break. Your experimentation capacity is effectively zero when your software doesn’t work. You’re also forced to squander resources and time on something that worked just fine yesterday and you risk burning your customers with unreliable service. You need production and operational stability.
• Incorporating your long-term business success metrics into your day-to-day decision-making keeps you on the right track, and helps decide which answer to a complex question pushes the ball forward: a completely reaction driven process tends to thrash, not advance. Similarly, critical but less visible infrastructure features fall by the wayside until they are very visibly in the way of forward progress. You need simultaneous focus on both long-term goals and short-term milestones.
• Finally, continual process improvement is a hard people problem. Once the basic infrastructure and processes are in place, people tend to focus on other, more visible problems, such as gameplay. Unless infrastructure is measured and tracked against at least at least at least timeshifting up a short-term needs and long-term business goals, the quality, speed and stability of your infrastructure tends to fall below the radar, until it is visibly and painfully in the way of production and/or customers. In fact, QOS and speed of content refresh are critical game features in your online service business; they need the same level of attention and resources as any other feature, if not more so. And even then, human nature is unwilling to change how work is done in the middle of a project. You must be able to measure reality and adapt your software, your development processes over and over again. You need facts and willpower.

Purple’s Three Laws of Analytics
1. What gets measured, gets done. Getting the right thing done is an entirely separate problem.
2. Individual metrics aren’t worth spit. Context is everything.
3. Change is tough. Without willpower and a continual, evolving path that is easier to use than not to use, you won’t change.