[ Content | Sidebar ]

satir change model simulation

November 3rd, 2008

The session that I attended at AYE this morning was Steve Smith’s session on the Satir change model. The meat of the session was a simulation, where one person was going through the stages of the model and the rest of us were broken up into teams representing stages: the Old Status Quo, the Foreign Element, Chaos, and the transformation into the New Status Quo.

I was on the Old Status Quo team; we (like the other teams) really put ourselves into it. We dragged in some comfy chairs from the hotel lobby, one of us brought in a bottle of wine and some nuts, we had some music playing that (we hoped) he’d like, one of us was acting as his best friend while others of us were whispering comforts (about the present) and uncertainties (about change) in his ears.

And we were prepared to take an active role in guarding him from change, in bringing him back to our comforts. Which was a good thing, since the Foreign Element members were not shy about making their presence known. Ditto for the New Status Quo; in fact, at first our three groups were causing enough confusion ourselves that the Chaos group really didn’t have to act: there was quite enough chaos already, thank you very much. We lured him back once (or, really, he got buffeted enough by the chaos to return to us as a haven), but the second time, the New Status Quo took hold and lured him into their haven. Which, ironically, looked an awful lot like ours: it turns out that we weren’t the only people taking comfy chairs from the hotel lobby and providing alcoholic beverages!

While I was actually taking part in the exercise, I wasn’t sure how valuable it was: sure, it was fun, but was I learning anything useful about change from it? But the subsequent debrief was extremely interesting, in ways that it wouldn’t have been if I hadn’t been directly involved in the experience.

For one: I was really tenacious in my role to lure him back to the Old Status Quo. So even when he was sitting in the New Status Quo comfy chair, I was still trying desperately to tell him that this was a cult, or that he was just their new shiny play toy, or something. But then I looked back, and I realized that the people from the Foreign Element team had actually taken away our Old Status Quo comfy chairs: that I was trying to lead him back to a state of affairs that had been far surpassed by reality!

Aside from being a brilliant tactic by the Foreign Element team, I thought that this really was saying something about change efforts in the real world: even once people are getting integrated into a New Status Quo and even when anybody can see that the Old world has vanished if they’ll just open their eyes, there will still be people trying to get back to the old way of things. (I did stop my efforts once I realized what had happened, though: I’m slow but not blind.)

The other thing that struck me the most in the debriefing was the tactics that the New Status Quo had used to guide him in. I’d somehow managed to avoid noticing this in the simulation, but (much to the consternation of other elements, the Chaos members in particular), there was one woman on the New Status Quo team who was variously described as his siren, his muse, or his guardian angel. She spent the whole time making direct eye contact with him and touching him as if they were dancing together (she’d in fact learned this eye contact idea from dance class), letting him focus on her to help him not be distracted by everything else that was going on. (And the Chaos team was quite creative: people spoke to him in foreign languages, one of them introduced himself over and over with different names, another one had this very annoying red flashing light, and I think there was some singing going on, too.) It took him a while to decide that he wanted to move forward, but once he did, nothing was stopping him, and I’m sure her actions were a big reason why.

This points out a way in which I could be more effective. I have changes that I’d like to promote, that I would sincerely like to guide people along. But, so often, I step away from making the necessary personal contact. Returning to the MBTI talk from yesterday, part of this is the NT Visionary or, even worse, INTP Architect / Designer Theorizer, part of my personality: once I’ve figured out how I would like things to be, a strong part of my brain considers that a solved problem and wants to move on to something else. (Fortunately, there are other parts of my brain that like to get their neurons dirty with the details of the implementation, if for no other reason than to see what they can learn from that.) And being a strong I (introvert) is also a big barrier: my default behavior is frequently to go sit in my office by myself, to send an e-mail when something else would be more helpful.

With luck, this conference will serve as a sort of aikido move in that regard: experiences like this will feed in the right sort of experience and theory into my brain that, with the help of blog posts like this one, my theorizer INTP brain will come up with a delightful theoretical realization that I should behave in certain ways in order to solve certain problems. And, with luck, the resulting theoretical realization will be enough of a counterweight to my ingrained traits to get me to actually do something about that. Don’t get me wrong, I’m not going to change who I am, but I should be able to find ways of acting that acknowledge my feelings while providing the benefits of hands-on interactions where it’s most useful. (Though not hands-on in quite as literal a sense as in this example!)

introverts and extroverts

November 2nd, 2008

Some tidbits about introverts and extroverts, prompted by today’s MBTI discussion:

  • When I got to lunch, about half the group from the tutorial session was in the lunch room, but it was almost completely quiet. I’m fairly sure that what happened was that none of the introverts wanted to stay around and chat after the official morning instructional part was over, so we all went down to lunch, and we all sat there not talking to each other. Once the extroverts showed up a few minutes later, there was a perfectly normal buzz of conversation.
  • According to Esther Derby, if you are an introvert and want to say something while extroverts are chatting away and won’t let you get a word in edgewise, a useful technique is: 1) Lean forward; 2) Raise your hand; 3) Open your mouth. The former is a sign that you’re about to act, the second is a sign that they should stop, the third is a sign that you want to speak. If you do all of these together, it should serve as enough of a signal that the extroverts will be quiet for a second.
  • Also according to Esther, if you’re an extrovert and, for some reason, you want to talk a bit less (e.g. to let the introverts speak), a technique that is sometime effective is to sit on your hands. (Presumably because it’s hard to speak without waving your hands around.)

the j/p split

November 2nd, 2008

Today is a warmup tutorial for AYE; the morning session ended with a discussion of Meyers-Briggs personality types.

What struck me the most this time was the discussion of the J/P split. This split is related to how you act: the J side (judging, scheduling) likes to have a plan and lists, while the P side (perceiving, probing) likes to go with the flow. (One of the session leaders described P’s as people who make late-binding decisions: until a P has actually done something, who knows how or if he will do it.)

Which shed a new light on yesterday’s post. My first recommendation, “At any time, figure out what you most want to do, and do it”, is pure P. Don’t get me wrong, I’m sure a J could follow it as well: their responses would just have a different flavor, since what they most wanted to do (keeping in mind their deep-seated feelings as well as their surface desires) would more likely be to follow some sort of plan. Still, though, it’s basically an expression of the P ethos.

But then the other two steps, reflecting on what you’ve done and (especially) having them lead towards a longer-term plan is much more strongly J. Again, it’s not incompatible with P-ness: the plans are still created based on your feelings at that moment, and you don’t have to follow them, but the flavor this time is much more J’ish.

If I’m remembering correctly, when I took a sorting test in the past, I came out fairly strongly on the P side of the P/J split. This time, while I was still a P, I was much closer to the boundary. I attribute that largely to my GTD practice, with a side helping of lean Standardized Work thrown into the mix. Heck, if I drill down a bit further, maybe even a bit of pattern language / systems for creating life in there, too? (No, probably not: the latter is more fundamentally P, in that at any given point you really have to sit down and observe what the current situation is telling you, no matter what your prior ideas suggested.) Of course, the question remains whether I’m being swayed by superficial practices or uncovering something deeper about my psychology; check back in a few years and I’ll let you know.

choosing what to do

November 1st, 2008

A warning: this post will perhaps come off as excessively self-indulgent: I’m only doing it because, within the last week, two different people asked me about this in person. (I’m happy to do more posts like this if y’all actually find them interesting, though.)

Occasionally, a friend of mine asks me how I get stuff done; occasionally, people even go so far as to ask me how much sleep I get. (The answer, by the way: if I get less than 8 hours a night, I feel lousy/unproductive the next day, so I try to avoid that; I try to get significantly more on at least one weekend morning, though Zippy sometimes has strong opinions that prevent that.) These are typically people who know me in a work/programming context, but who also read this blog and see me yammering away about video games, learning Japanese, the occasional book, and what not.

The short version:

  1. At any time, figure out what you most want to do, and do it.
  2. Reflect on your choice from step 1.
  3. Repeat the above on various levels of scale: every minute, every hour, every day, every week, every few months, every year or two, with your reflections about one level of scale informing your actions at a higher level of scale.

This is fairly obvious, but not quite as banal as it looks. We all have many more things that we’d like to do than hours in the day (books to read, video games to play (especially right now!), programming languages to learn, …); I get the impression that I get less frustrated by this than many people, and apparently to some people I convey the impression of actually managing to do more things than the norm. (Also of a wider variety than the norm, about which see more below.)

The single technique that I find most useful to managing my frustration is the first tip above. Sure, I have a zillion books I’d like to read, a zillion games I’d like to play. I realize, however, that at any given instant, my eyes are only going to be passing over the text of at most one of those books, or my hands are going to be holding a controller managing at most one of those games. And I realize this not just at an intellectual level: my brain is actually pretty much at peace with that concept, and I expect that most of our brains are.

So, while there is part of my brain that says “but I really wish I knew Erlang!”, I have a technique that I can use to quiet that part of my brain. I ask it: “great; do you want me to stop what I’m doing right now and go learn Erlang?” If the answer is yes (which it hasn’t been so far, no guarantees about next week), then, fine, I’ll go and start learning Erlang! If the answer is no, then that’s enough to make that part of my brain shut up for a while.

It’s not enough to make that part of my brain shut up indefinitely, of course. This is where the reflective part comes in. (Mindfulness might be a term worth mentioning around here, too.) I have various deep-seated desires, many things that are important to me, centers in my life that I want to cherish and nourish. And whatever action I choose at any given time is unlikely to nourish most of those. (Though there’s something to be said for gravitating towards actions which nourish several of them at once; fortunately, this turns out to be possible more frequently than one might think.)

So, after doing that thing for a little while, I ask: is this still what I most want to do? In what ways do I feel better now, in what ways do I feel worse? This lets me decide what to do next; on a deeper level, it also lets me tune my sense for what I want to do at any given moment, to help me tell apart actions that will satisfy a superficial need from those that will satisfy a deeper need. (At any given time, I may choose to satisfy one or the other type of need, I don’t claim to always be fulfilling my deepest needs, but it’s useful to be aware which one of them I’m doing.)

And it’s also useful for feedback into higher-order planning. So far, I’ve talked about making choices at a minute-to-minute level, but letting myself be buffeted around in a brownian motion by those desires isn’t likely to create a satisfying life. So I need to step up a level and think about I want to be doing over a longer period of time.

Here, the flavor is somewhat different: if I’m choosing actions that will, for example, take place over a week, then I probably shouldn’t choose just one action: I should (tentatively) choose several actions that, in aggregate, sound like how I most want to spend my time over the next week. On the non-work-related side of my life, this might consist of picking a book or two to read, a couple of games to be playing through, and renewing my active choice of ongoing actions in other areas that are important to me (hanging out with Liesl and Miranda, learning Japanese, etc.). But this isn’t an unlimited set: it’s a conscious choice of a finite collection of items, a collection that, based on my past experience, I should be able to do over the next week and be happy doing so. (And it’s very important to leave in enough slack so that I can open myself up to surprises about what I most want to do on a smaller time scale.)

And then I should reflect on all of that, and occasionally think about this on still larger scales: what sort of parent/husband/colleague/friend do I want to be, where do I want my career to go, what are the key centers in my personal life, do I want to grow some of them, shrink some of them, transition some of them from personal life to work life or vice-versa?

So that’s the strategy. The details of how one might go about this, of course, vary wildly from person to person. In particular, I think part of the reason why people asked me about this last week has to do with a couple of my personal quirks that give people an inaccurate impression of me:

  • I pursue a wide range of activities in less depth instead of a narrow range in more depth.
  • One of the centers that’s important to me is the “public intellectual” one, which means that I blather about what I’m doing on my blog instead of doing (potentially more) interesting things in private.

When you put those two quirks together, it seems like I’m doing tons of stuff; this is perhaps true, but it doesn’t mean that what I’m doing is any more worthwhile than what somebody else who is quietly focusing on a narrower area is doing. If you’re the sort of person who likes to do lots of different things, then by all means follow that aspect of the way I choose to manage my life, but that’s simply a difference in temperament/choice, not something that’s better (or worse) than the alternative.

(Side note, related to the “public intellectual” bullet point: I even caught myself explaining my apparent productivity by saying “I don’t watch much TV”. This is true, but I spend a fairly large amount of time playing video games, which doesn’t have any higher social status! Since I talk about video games and actively manage that part of my life, however, that means that even people who don’t play video games are relatively likely to give me a pass on that part of my life, to accept it as something valuable even if they wouldn’t choose to do it themselves. But my blogging about video games doesn’t mean that I’m doing anything more worthwhile with them than somebody who plays more and blogs less. Though I do think there’s some virtue to actively managing that part of my life, as with all the other parts.)

I can go into excruciating detail about the techniques, but I think this is a good place to stop for now. (This is certainly nothing new: the concepts and implementation details are in agile, in lean, in GTD, doubtless in any number of other places.)

I now return you to my regular schedule of video game blogging. Or Christopher Alexander blogging. Or, well, whatever I feel most like blogging about at any given time, with that choice informed (but not determined) by my broader goals.

google out-of-print book deal

October 30th, 2008

I wouldn’t have thought that anything could get me more excited today than learning that Harmonix had gotten the rights to make a Beatles game, but then I learned that Google now has the right to sell copies of out-of-print but in-copyright books.

I am extraordinarily surprised, amazed, pleased by this. Books have been very important to me for longer than I can remember (I used to read upwards of five hundred books a year), and there are out-of-print books that I’ve had to search years to find. The very concept of “out-of-print book” offends my soul: books are the cultural heritage of our species, they are a sacred gift, and the idea that they can simply be made inaccessible offends my soul.

It should also offend the constitution: while I don’t expect others to share my reverence, I’m happy to compromise on the matter and allow that copyright should have as its goal “to promote the Progress of Science and useful Arts”. (Actually, I don’t like the word “useful” there, but never mind that for now.) And there, too, restricting access to out-of-print books is quite counterproductive. Especially given the orphan works problem: there is no realistic way to find who has the right to allow copying of the vast majority of out-of-print works.

There has been some rumbling in these areas, so I was cautiously optimistic that we’d have some progress within the next decade; I was completely unprepared to finally get around to reading yesterday’s newspaper this evening and come across this. Especially given how sensible it is: sure, I would like to eliminate the concept of “out-of-print book” entirely, but as long as the default is set to allow viewing/purchasing unless the rights-holder actively objects, that’s 95% of the victory.

I can only hope that other industries will follow the lead of book publishers here. I’ve given up on getting anything sensible (heck, anything not actively self- and culture-destructive) out of the music industry; maybe the movie industry will see the light, though? (Admittedly, the texture of the orphan works problem is rather different there.) As somebody who cares about old video games more than most, I’d certainly like to see a solution in that space as well.

Side note: this is the first time that I’ve felt that my twitter feed has let me down. This was announced two days ago, but nary a tweet mentioning it. I trust that I’ll find a few entries in my feed reader on the subject? (I haven’t read RSS feeds since Monday.) I have, reluctantly, removed Lawrence Lessig from my feed reader, but I did go out and look for his take on the matter, if you’re curious. Though I suppose there’s a bit of poetic rightness in learning about this from a print medium…

living code

October 26th, 2008

Today’s Nature of Order experiment: see what the characteristics of living structures might look like when applied to software. Many thanks to the Agile Open California participants who helped me think through this; I’ll have a later blog post that talks about agile and living processes.

Levels of Scale

This is certainly present in the hierarchical structure of code: characters, tokens, expressions, blocks, methods, classes, modules, programs.

But there’s another way of breaking down code into levels of scale: imagine that you’re tracing one piece of control flow. So you start with a method (you can even start with main() if you’d like) and then imagine inlining all the methods it calls directly or indirectly, until you’re left with one enormous method representing all of that control flow. Then the chunks of code that correspond to the different methods that you inlined (together with everything inlined inside of them) carve out levels of scale within that enormous method.

I suspect the second point of view is more productive on a day-to-day basis than the first point of view. Though if you can think of useful ways to extend the levels of scale along the lines of the first point of view, that could potentially be very productive!

Of course, not all levels of scale are created equal. As Alexander says (The Phenomenon of Life, p. 146): “Thus the property of having levels of scale is not a mechanical thing, which merely requires a wide range of different sizes. It arises properly only when each center gives life to the next one.” In other words, don’t just Extract Method willy-nilly: do so in a thoughtful way, in which the extracted methods have life of their own. (Maybe that’s the difference between Extract Method and Compose Method?)

Also, pay attention to the distance between the levels. Alexander continues (p. 147): “It is also extremely important that to have levels of scale within a structure, the jumps between different scales must not be too great.” He then (pp. 147-148) gives real-life examples where the difference between scales is 2000-1, or 20-1, and finds that, in both cases, the property doesn’t come out strongly; in cases where it is 2-1 or 3-1, however, he far prefers the results. (If you are in or looking at a modern, sterile building, look at the walls, windows, etc. and compare the levels of scale: you’ll very frequently find far too few levels of scale, at far too large a size ratio.)

There’s a direct and useful analogy for code here: we’ve all dealt with methods that are 10-100 lines long, mixing concepts with details. Instead, make your methods 2-5 lines long, and the resulting code will be much more pleasant to work with. In fact, Smalltalkers will tell you to make your methods 1 line long! I’ll have to think about that more in light of this property: exactly what ratio of scales is a 1-line method expressing?

Strong Centers

Classes that stand for one, clear concept. Methods that do one thing, and only that thing. Concepts that pervade the code. This one’s so fundamental that I’m not sure what to say here…

Boundaries

Alexander doesn’t like just any old boundaries: he likes boundaries that are thick enough to be centers of interest in their own right, physical boundaries that are a non-negligible proportion of the size of the object that they propose.

With that in mind: the public interface of a class? An abstract interface that a concrete class instantiaties? A data structure / interface that threads use to communicate with each other? I’m not sure that last example meets Alexander’s size criterion, though. For that matter, when I come down to it, I’m not sure the earlier examples do, either, though in the opposite direction: I don’t see any reason why a healthy class can’t have almost all of its methods public; and it doesn’t strike me as all that odd for a concrete interface to add very little to an abstract interface.

Though, on reflection, maybe those examples, especially the last one, should strike me as odd: if a concrete classes doesn’t naturally want to provide more functionality than the abstract interface it represents, then maybe the two should be unified? Are there many good examples where you have multiple concrete classes that all support the same abstract interface, and where they don’t add methods of their own? If not, then this is a sign of an abstract interface with a single concrete implementation, where the abstract interface exists only to help optimize the compiler/linker. And that may be more of a programming language design smell than a sign of good code.

Alternating Repetition

I’m not sure what this one means in the context of code; thoughts, anybody? This is a problem that I frequently have when considering these properties in a more abstract context: in such concepts, centers are generally conceptual, and this property is not only geometric but linear. And that makes it hard for me to find its analogues in other contexts.

Positive Space

This is another one that I find difficult to map to more abstract situations. Positive Space means that the (negative) space left behind by removing certain centers is, itself, a strong center: e.g. a quadrangle between four buildings. Again, it’s very geometric (this time planar rather than linear), making it hard for me to find analogues in code.

Good Shape

Quoting from Phenomenon, pp. 179-181:

What is a “good shape”? What is it made of? It is easiest to understand good shape as a recursive rule. The recursive rule says that the elements of any good shape are always good shapes themselves. Or, we may say this once again in terms of centers. A good shape is a center which is made up of powerful intense centers, which have good shape themselves.

In addition, we note that the simplest and most elementary good shapes are made from elementary figures. Thus the first thing to realize is that in most cases the good shape, no matter how complex, is built up from the simplest elementary figures.

I don’t find that to be a particularly satisfying definition of Good Shape, in that I’m sure it would be easy to find figures built up recursively out of elementary figures that don’t have good shape. (The second version is a bit better in that regard, with its addition of the criterion that the components are “powerful intense centers”.) Still, I think we can use it as an inspiration for notions of Good Shape in code.

In code, what are the analogues of elementary figures? Method calls, sequences of expressions, conditionals, and simple looping constructs are all good candidates. So, if we want code to have Good Shape, it should be built recursively out of those.

Which is, to be honest, kind of vapid: by definition (fomalized in the grammar of most programming languages), code has to be built out of those constructs! Well, except for the “simple” part of “simple looping constructs”; certainly that smell has pointed out some bad code to me in the past. (What about exceptions? I like exceptions in the proper context, I’m loathe to accept that code that uses them doesn’t have good shape. I’ll have to think about that.)

Given that not all code should have Good Shape, then, we should be looking for code that brings out those elementary centers most intensely. And here we are, perhaps, on to something: perhaps code that has this property is likely to be composed out of clear centers exhibiting the above? For example, a relatively mindless rule that we could insist on is that each method either be a sequence of relatively straightforward expressions, a single more meaningful method call, a conditional statement, or a loop. No mixing and matching: if you want the body of a loop to have multiple statements, extract the body into a method!

That’s probably too narrow a straightjacket, but I’m not completely sure; I am sure that I’d learn something if I were to write code adhering strictly to those rules. (I’d certainly learn that I’d want to be programming in Ruby or Smalltalk rather than C++ or Java…)

Local Symmetries

Another relatively geometric property; any ideas?

Deep Interlock and Ambiguity

The picture that I keep in mind here is two crossing beams of a log cabin: the place where they intersect forms a strong center whose strength comes from its ambiguous nature as part of both beams, from the interlock of those beams.

Maybe this is exemplified by the sort of class that gathers together a bunch of other relatively complex classes, and hooks them up and lets them work together? Classes like that seem very prosaic on the surface, but I’m not sure that’s right: they can be the magic that turns code from a bunch of isolated data structures or algorithms into a program that actually does something useful.

I think there’s a deeper application here that I’m missing, though: my guess is that, if I understood this properly, this would have profound implications in my ability to detect good code. Going back to my motivating picture, perhaps what this is really pointing at is the power of the notion of orthogonality in code: if you build your code out of the right set of primitives that address different dimensions of the problem space at hand, then you can put some very simple ideas together and work wonders.

Contrast

At first, I thought a good example of this would be the sharp boundary between what a well-designed class does and what it doesn’t do: it should be in charge of representing one concept and nothing else.

Looking through the book, though, now I’m not so sure: “in scope” and “out of scope” aren’t opposites in the same way that light and dark, empty and full, solid and void are. I certainly don’t know how to apply the following idea (Phenomenon, p. 200) to code: “The most important contrasts do not merely show variety of form (high-low, soft-hard, rough-smooth, and so on) but represent true opposites, which essentially annihilate each other when they are superimposed.” Any suggestions?

Gradients

Another geometric property that I’m not sure how to apply. Do classes at the fringes of your code (e.g. simple container classes) have a different character from classes that are doing the overall organizing? Should they?

Roughness

This concept gets to one of the aspects of what can make programming so rich, so profound: your code has to work, it has to (or should strive to!) do something useful for somebody. I love beautiful, elegant conceptual structures more than most, but ultimately that alone isn’t nearly enough: those structures have to work together to produce something useful, and if that means that you lose a bit of the purity of your overall vision, tough. In fact, as this property suggests, you should celebrate that: it’s making your code more beautiful, more richly textured, and is probably teaching you something if you know where to look.

Another idea that this property suggests: I seem to recall (but I can’t remember where or from whom) that you shouldn’t refactor mercilessly: you should always have a bit of mercy in your refactoring, you should stop when you can only see one more refactoring to do and when that last refactoring isn’t giving you any immediate value. Leaving that last bit of roughness in your code can be that little seed that lets you follow your code in unexpected directions as further requirements arise.

“Worse is better” is, at its core, an expression of this property.

Echoes

Use a consistent vocabulary: use a consistent scheme for class names, for variable names, for attributes. Use your data types consistently, don’t change them around without a reason. Use a consistent coding style: individuality is all well and good, but indentation is not the right place to express that.

Maybe that most-ignored of XP practices, Metaphor, has its roots here?

The Void

This is one of my favorite properties: it’s one of those that I understand the least, that I suspect I’ll be learning from for years.

At first, I had a hard time thinking of what it would mean in code: like Positive Space, it seemed somewhat geometric. But, on a more conceptual level, the idea here is that what your code (or one part of your code) doesn’t do is as important as what it does do. And not just what that piece of code doesn’t do: if a class doesn’t do X but another class does do X, then that’s not a Void, that’s just two distinct centers. (To be clear, there’s nothing wrong with that!) So the voids are areas of the design space that you’ve explicitly decided not to explore.

And some of the most important design concepts over the last decade have come out of this space: Rails, with its notion of “opinionated programming”; REST, with its idea that you should focus on what HTTP does naturally and stay away from areas where HTTP doesn’t behave naturally.

Stepping away from code and talking about design more broadly, this is also the fight against feature bloat, against releasing a new iteration of your software with another 20 bullet points added to the back of your box. Instead, write programs that have a clear point of view, that do a few things well, and let people choose the right tool for the job. (This is, of course, not a new idea: it’s been part of Unix ever since its birth.)

Simplicity and Inner Calm

A small class that knows what it does, knows what it doesn’t do, and is at peace with that. No features for their own sake: code gets added if it’s necessary for something and if this is the right place for that functionality.

Not-Separateness

A class doesn’t, shouldn’t exist in isolation: it exists because it is part of a program as a whole, because somebody is using it to do something.

Or, for a less banal (or perhaps just less profound?) example, consider traditional Unix programs, consider the programmatic web. In the former, we have the philosophy that programs should do one thing, but that they should express that by accepting text as input and generating text as output in such a way that you could run them on arbitrary files and compose them via arbitrary pipelines. In the latter, we have the idea that, if you’re creating a web page, consider exposing the data on that web page in some sort of machine-processable format: expose collections of information as RSS feeds, accept some sort of XML input protocol so that people can write clients that can add information to your site programmatically in ways that you would never have envisioned. This is the world that gives rise to feed reeders, to Google Maps mashups, to twitter clients.

Final Thoughts

As The Process of Creating Life tells us, however, it’s not enough to have a static conception of these properties, it’s not enough to be able to recognize living structures when we see them. Instead, we need to be able to create new living structures; Alexander’s contention is that it’s almost impossible to do so without using dynamic versions of these properties, to grow them by adding (or pruning!) centers in a way as to bring out existing centers more fully by highlighting one or more of these properties.

The person who I pay most attention to in this regard is Kent Beck. In particular, he has a very different approach to patterns than most other people: his book Implementation Patterns, for example, is full of what other people would call refactorings. And this isn’t just an idiosyncratic choice of vocabulary: the result of these patterns is code that exemplifies these properties in a static sense, and he tells us how to get there by modifying our code dynamically.

Beck also has a very good sense for the static view of the properties. In particular, you can probably get a lot more mileage out of his four rules for simple design, that simple code:

  1. Runs all the tests.
  2. Expresses every idea that we need to express.
  3. Says everything once and only once.
  4. Has no superfluous parts.

The first only relates indirectly (but no less strongly!) to the above, via a dynamic process for generating living code; the other three properties are all about making your code out of strong centers.

I’ll talk more about dynamic processes for generating living code in a future blog post, in particular about viewing agile methodologies through the lens of these properties.

liesl’s grandmother’s brownies

October 24th, 2008

I can hardly turn down a direct request for a recipe, so: Liesl’s grandmother’s brownies. If you like this, I have several other dessert recipes that are worth trying. (Or ask me for Betsy cookies, or for our standard chocolate cake recipe.)

Make sure not to stint on the beating time, it’s important. (Just be glad that, unlike Liesl’s grandmother for most of her life, you have an electric mixer…) I don’t think I’ve ever actually tried it with the nuts.


Brownies

4 oz. unsweetened chocolate
2 sticks unsalted butter
4 eggs
2 cups sugar
2 tsp. vanilla
1 cup flour
1/2 tsp. salt
2 cups chopped nuts (optional)

Melt chocolate and butter together in a double boiler; let cool to room temperature. Meanwhile, beat eggs and sugar for 10 minutes. Add chocolate mixture and vanilla; mix well. Add flour and salt; mix until creamy. Fold in nuts. Bake in a 9″x13″ pan in a 350 degree oven for 25 minutes. Top with glaze, below:

Glaze

2 Tbsp. cocoa powder
1 2/3 Tbsp. water
1 Tbsp. oil
1 Tbsp. light corn syrup
1 cup confectioner’s sugar

Cook and stir cocoa powder, water, oil, and corn syrup until smooth. Remove from heat. Beat in sugar.

rock band vocals

October 19th, 2008

When we last left our humble narrator, I was making my way through the Rock Band drums. I made it all the way through on Medium, and a fair distance on Hard. But all the skills aren’t there yet: in particular, my foot has a harder time sight-reading than my hands (should have practiced organ more in high school, I guess), and I also have a hard time playing with my foot quickly, accurately, and without fatigue. So clearly my technique needs some work.

I ended up making it through tier 6; in a bit of a surprise, my guitar nemesis, which was also the song I did worst on on Medium drums, namely Green Grass, was the song that I did by far the best on: I had a 220-odd note streak, almost a hundred over my longest streak on any other song, and I probably would have five-starred it if I hadn’t been hoarding energy waiting for tricky bits. (Which is a sign of how bad I am on drums: I have yet to five-star a single song.) But two of the songs on tier 7 were too tricky for me; I’m sure I can overcome this problem with more practice, but the consensus seems to be that Rock Band 2 is significantly better for honing your drum skills.

So I decided to give vocals a try today. In a bit of arrogance, I decided to start on Hard, despite my lack of singing experience; I’m doing okay through the first 20 songs, though I have had to restart a few. And it’s certainly harder than it looks: while I’ve five-starred several songs, I haven’t come particularly close to perfect on any of them. (Except maybe the rap ones? Which I would just as soon not have in the game; it’s not like any of them are particularly wonderful on guitar, either.) Unsurprisingly, the ones with female vocalists are the hardest for me (I don’t have a particularly wide singing range; yes, I am aware that I can skip up/down an octave if it helps, but it usually doesn’t); I have renewed respect for women who do well singing the game, given the relatively large number of male vocal parts.

Usually, if I fail out a song, it’s because I’m not managing to produce a consistent pitch at all, rather than because I’m consistently producing the wrong pitch. So the moral here seems to be: it’s much better to sing incorrectly with conviction than to sing with so little conviction that it can’t tell what you’re trying to do. Of course, it does no good to belt out a wrong note after note, you have to alter your singing according to the game’s feedback; it turns out, though, that most of the time if I’m singing with enough conviction then I can actually do a decent job myself of telling whether or not I’m doing a good job. So the moral here is: don’t try to avoid being judged: the mere fact that you set your actions up to be testable will have good effects. (Just like programming!)

Actually, I’m not quite sure how the game detects the pitch: I don’t feel that I’m wobbling in my pitch all that much when I’m singing quietly, but maybe I’m wrong? It seems to pick up Miranda’s voice okay when she’s singing relatively quietly. Just for kicks, I tried whistling, because I’m better at holding pitch there than when singing, but it doesn’t pick that up at all. (Which is fine, I’d rather sing than whistle.)

I also got pretty hoarse; I’m not sure whether I’m suffering more injuries when playing drums or vocals, but both are more of a physical challenge than guitar is. Fortunately, I’m not yet suffering to the extent that Mitch is

Guitar remains my favorite instrument. (It’s also the one that I’m by far the best at; no coincidence there, though the linkage isn’t quite as straightforward as me simply liking things that I’m good at.) But, as with drums, I’m very glad I’ve given vocals a try; I’m not sure yet whether or not I’ll give it a try on Expert after going through Hard (heck, I’m not sure I’ll be able to finish all the songs on Hard!), but I might, and I imagine that I’ll give vocals a try again in Rock Band 2 and on future downloadable content that I purchase.

random links: october 19, 2008

October 19th, 2008

deus ex: final thoughts

October 14th, 2008

We’ve finished the VGC playthrough of Deus Ex; what did I learn from the experience?

Well, one thing that I learned is that a lot of people have a lot more to say about the narrative and world of the game than I do. Which made reading through the discussion a lot of fun! And which is something that I’ve learned about myself over the first two VGC games: I like reading books, and for that matter I generally enjoy narrative games, but when I’m playing a game in a context where I’m thinking about them more than normal, my brain seems to turn to gameplay matters more than to narrative matters.

Continuing along solipsistic lines, I learned something else about my psychology: as noted after the first week, this game did a remarkable job of triggering my perfectionist tendencies, meaning that I couldn’t relax at all until most of the way through the second week. Basically, my brain needed to understand the gameplay mechanics at a less-than-completely-superficial level, and to have a good item cushion in my inventory. Now that I’m aware of this, I’m curious if I’ll be able to short-circuit this when playing future games, encouraging myself to relax more at the start. (Probably not…)

And I learned something about the use of violence in narrative games. Deus Ex is one game where you are encouraged to think twice about the consequences of your actions; despite that, I left a trail of blood behind me without a twinge of guilt. Maybe I’m just conditioned to be callous in video games; I think there’s something to what Delany says, though.

And then there’s the level design. Which gives us a lot to think about, from the (to me) complete suprise of the rich UNATCO headquarters, to the delights of Hong Kong, to the shocking change of pace of Paris, to the grind at the end. I’m not going to be as obsessive with the Nature of Order analysis as I was in my last post, but does that framework give me any ideas to hang my hat on here? Let’s see:

In any sort of game like this, the most obvious Alternating Repetition is going to be the repetition between shooting (or other forms of interaction with hostiles, e.g. sneaking around them) and free exploration. That happens at at least two Levels of Scale: the level of the individual encounter (e.g. dealing with a room of hostiles, then exploring until you get to the next room) and at a broader scale (a mission in enemy territory followed by exploring open areas).

In a related vein, this game had some remarkable Boundaries framing some of the larger-scale hostile encounters. The one that struck me the most is the aforementioned UNATCO visit following the Liberty Island attack. But there are others, e.g. the peaceful start to Versalife before you start going places where you really shouldn’t. Also, I think Hong Kong has some strong The Void resonances.

The problem is, the game didn’t keep those last two properties up: once you get past Hong Kong, the larger-scale breaks from action dwindle notably, and are almost completely gone after Everett’s house. I disliked the Paris level, but I can understand why Bus suggested that its design makes sense on narrative terms, in order to give the player more of a direct experience of the repression that’s going on. And it makes sense in terms of my analysis, too: having an extended level full of hostile encounters gives a third Level Of Scale in the hostile / explore rhythm. (On a similar note, my feeling after finishing Half-Life 2 was that they should have cut most of the long levels in half but left one of them (Ravenholm?) intact.)

I can also see why the narrative encouraged the designers to remove the rest spots from the last several levels; here, though, I’m less sympathetic to the results. Ending with a big blow-out level makes sense to me (e.g. as a manifestation of Gradients). But having the last quarter or third of the game be one battle after another was really too much for me.

This can’t be a narrative problem unique to games. (Though relentless combat gives a grind feeling to games that you don’t get, at least to the same extent, when reading a similarly structured book or watching a similarly structured movie.) How do examples in other media solve this problem of giving areas of rest when building up to a climactic ending? Or do they not bother to solve the problem at all, am I just being over-sensitive?

So there were some surprising delights here, but also some surprising drudgery: I wish they’d maintained the various patterns from the first half of the game throughout its whole length. And yay for Boundaries and for The Void. Hmm, what other properties should I be talking about? Are the alternate playthrough techniques an example of Deep Interlock and Ambiguity? I think so, and a delightful one at that.

An excellent choice for our third game: I wasn’t as excited about it at the start as I was about some of the other candidates, but I ended up quite enjoying playing through it, and enjoying thinking about it and discussing it even more. I’m glad that the conversation about what game we should play as our third offering is leading in a more lighthearted vein, however.

vgc: deciding on game 3

October 12th, 2008

If you’re interested in participating in the Vintage Game Club, but haven’t felt like joining in either of the first two games, now is your chance to change that: we’re discussing possible choices for game 3 in the forum right now.

shadow of the colossus as living structure

October 12th, 2008

When I finished playing Shadow of the Colossus, I was impressed by it, but no more than by several other games from around the same time.

Then at some point, perhaps a year and a half later, I was browsing the web and came across a picture of the game. And I gasped, I shuddered. I’d never had that sort of physical reaction to game media before; clearly the game has gotten its hooks deep into my soul, much deeper than I’d imagined.

Given my current Christopher Alexander obsession, I thought I should examine the game in the light of the concepts from The Nature of Order. Shadow of the Colossus is perhaps the best example of a living structure in video games that I know of; and that structure has as its focus the beautiful, loving care with which the colossi are developed as centers.

Alexander’s list of fundamental properties in living structures:

Levels of Scale

Each colossus shows this off wonderfully: they’re huge, they’re detailed down to their hair, and they have visual/physical structures at at least a half-dozen levels in between. And these structures aren’t just there to look beautiful: they affect the gameplay, in that the protagonist is at a much smaller scale than the colossi (in a similar scale to the weak spots; the sword is a still smaller scale), and you have to follow paths at a scale approaching that of the colossi, with barriers at an intermediate scale made out of elements at a smaller scale. (And during each boss fight you have to navigate an arena at an even larger scale than the colossus itself.)

Of course, levels of scale aren’t only present in the colossi: the largest scale in the game is the entire game world (with hints at a broader world beyond it!), and there are many, many meaningful levels of scale between that and the blades of grass. And, indeed, the game world is wonderful, and is part of what gives the game its power. But the density of levels of scale within the colossi are one of the truly remarkable aspects of this game: in few other games will you find bosses as richly crafted as these, and in perhaps no other will you find such interplay between the visual/physical layers of scale in the bosses and the gameplay of the boss fights.

Strong Centers

The colossi are, of course, the most glorious examples here. But there are others: the protagonist, the girl, the horse. (The horse!) The central building. The birds soaring overhead. The world that you explore in the game. (Set off from the rest of the world that you can’t explore, that only exists by implication.) Your sword. The temples that dot the landscape. The ruins, the water, the crevasses, the plains, the glades. The lizards. The components that these are crafted out of, that are beautiful enough to stand on their own.

And then the conceptual centers of the came: love, combat, sacredness, power, sadness.

Boundaries

A point that Alexander emphasizes: it’s not enough that boundaries between different components exist, they have to be thick enough to stand on their own, to be centers in their own right.

One example, perhaps, is the arena around each colossus. A colossus isn’t just plunked in the middle of the game world at random: it has its own territory, which is large enough to give it room to roam yet small enough that your attention is always focused on the colossus when within that area. The surface of each colossus (its boundary as a three-dimensional object) is a center in its own right, and one whose thickness gives life to the gameplay of the boss fights; as are the boundaries of that surface, its feet and its face.

Buildings, too, have thick boundaries: those are thick stone walls, not sheets of wood, drywall, plaster. On a larger scale, the game world is divided up into different geographies, with significant geographic barriers between them, such as the crevasses that cross the landscape.

Alternating Repetition

You fight. You travel. You fight. You travel. Within each fight, you find a way to get to the vulnerable spot, then you attack. (Frequently with further repetition, e.g. between periods when the colossi are shaking furiously and when they’re calm enough for you to be able to move here.)

On the one hand, I’m not sure this is a property that the game goes out of its way to explore. But the simplicity of the game play in its own way brings it out very strongly nonetheless: in particular, the constant repetition of fight / travel / fight / travel, with each aspect taking a comparable amount of time, is unlike any other game I’ve ever seen.

(Side note: Versus CluClu Land had an interesting piece recently linking Shadow of the Colossus with Punch-Out!!. And, indeed I hadn’t thought until reading that about how both games are structured as a sequence of boss battles. But this property points out one key difference: the space between the battles is almost completely absent in Punch-Out!!)

Positive Space

Not a property that the game goes out of its way to explore. At least I don’t think that it does: perhaps a closer look at the game map would prove me wrong, indeed perhaps the arenas you fight in could themselves best be thought of as positive space? And certainly it’s there on the colossi, e.g. the spaces between the armor that they typically wear, the spaces that so frequently form the paths that you can climb, that contain the vulnerable spots that you can stab?

Good Shape

The colossi are full of examples of this, from the details of their bodies and armor to their overall physical layout. The designers were wise to model the colossi on animals; they were wise to pay such close attention to the real world (with its living structures), to have the architecture based on older, living models.

Local Symmetries

This one puzzles me. Of course, it’s all over the place in the physical design: from the bilateral symmetry of the creatures to the local symmetries that are everywhere in their component parts. You’ll have no trouble finding a hundred local symmetries in this picture, and you can’t even see most of the body of the colossus in it:

Shadow of the Colossus VariousSee More Shadow of the Colossus at IGN.com

So this property is certainly there visually. Is it present at a more conceptual level? I’m not sure…

Deep Interlock and Ambiguity

The morality of the game is all about ambiguity, of course. But this property is one that is more interesting than you might think from its name: deep interlock is how, when adjacent centers meet, they form an area with its own power, an area that emphasizes the power of both the centers that join together there.

To that end, consider the feet of the colossi. These are, in some sense, the locations where the colossi and the ground interlock; in gameplay terms, this forms a wonderfully productive region of ambiguity, in that, when this interlock exists (i.e. when the feet are on the ground, and on the ground long enough for you to take action), they transform the colossi into territory, they provide the mechanism by which you can begin ascending the colossi! The joints of the colossi (giving the interlock between upper and lower limb, or limb and torso) can provide a similar, though less powerful form of interlock and ambiguity.

And then there’s the protagonist and the horse, joined together in travel and, at times, in battle. I’m not sure why the horse in this game moves me so much, but this may be part of the answer?

Contrast

Is this a game of strong contrasts? You versus the colossi, certainly, or areas on their bodies where you can climb and areas where you can’t. They as the forces of darkness, you with your sword of light, that seeks out the patches of light within their bodies.

Or perhaps they’re the forces of light, and your sword is just the vehicle through which that’s revealed? In a lot of ways, I see more grey here than contrast.

But then I go back to pictures of the game, and see how lighting is used, to bring out stark relief. Consider, for example, this picture:

Shadow of the Colossus VariousSee More Shadow of the Colossus at IGN.com

The dark of the colossus against the white of the sky, with the fins of the colossus bringing that out still more via Alternating Repetition. Indeed, the darkness that your horse shares with the colossus (is darkness the color of life in this game, or at least of nature?), contrasted against the light of your body, of the sand.

In fact, the game engine goes out of its way to artificially enhance contrasts in lighting: see this interview which, among other things, discusses how they use high dynamic range techniques.

Gradients

Is this brought out in the design of the individual colossi? I’m not sure – maybe the design elements are more closely spaced at their tops than at the bottom, maybe not. There is, of course, the gradient that occurs in any video game: the colossi get tougher, larger, farther away as the game progresses. And the morality gets more and more ambiguous…

Roughness

The game shines here. To be sure, “shines” is probably the wrong adjective to use when talking about roughness, but that aside: no unnatural artificial regularity to be found. The pieces of the colossi fit together in a way that just feels right: the armor is natural on their bodies, but it shows its age, it’s not freshly mass-produced out of a factory that knows nothing about the colossi, it instead fits together enough to be functional, to be properly placed, and no more. In fact, the game goes out of its way to go away from roughness, with its ruined buildings and desolate landscape.

Echoes

This is another relatively subtle property: the centers should have “deep internal similarities between them which tie them together to form a single unity.” (The Phenomenon of Life, p. 218.) Which is unquestionably the case here: the colossi, despite the significant differences between their details, are unquestionably all of a piece, indeed the game has a very strong unified aesthetic.

The Void

When reading the above, it may seem that I’m treating these properties as a rorschach blot that I could project onto any game. I don’t believe that to be the case: I think that this game is quite unusual in how it’s possible to find what I believe to be significant manifestations of all these properties in it. But some of those properties are present more superficially than others (typically the ones where my explanation boils down to the way the colossi look), while others are more deeply present.

Strong Centers is one of the properties that is most deeply present, and The Void is another. In another blog post on this topic, I suggested that The Void is almost completely lacking in most video games; it’s present here in spades. It’s here most obviously in the open wastes of the game, and more subtly in the melancholy, contemplative atmosphere that pervades the game. But it’s also present at a structural level, working actively to strengthen the centers that are present. As The Process of Creating Life says (p. 74, in the midst of discussing how the properties develop dynamically):

Part of the process of structure-preserving requires cleaning out from time to time, just as an orchard must be pruned. When a situation occurs where there are too many centers, too crowded together, in a confusion of structure, a structure-preserving process must be applied to the situation, since the conglomeration of centers becomes so confused that it begins to undermine the coherence of the centers. That means the process must act to discern the deep structure, the most important structure beneath the confusion. This important structure must then be preserved and the rest cut away.

As a result, structure-preserving transformations frequently act to create The Void. As structure is preserved, the transformations act to preserve distinctness. One of the ways this happens most frequently is that dense highly differentiated structure gets set off against empty, clean smooth structure, and distinctness is maintained.

We may also express this by saying that crowded complex structure often ends up living at the edge of a much larger homogeneous void, and that the contrast between the intricate structure and the vast emptiness is needed to maintain the structure of the intricacy.

I don’t know what process was used to create the game, but that’s a perfect description of the result. Everything in the game is subordinate to the colossi: all extraneous design is swept away, and as a result those centers are enormously powerful. And the other secondary centers have a similar clarity arising from their pruned environments: no lush characterization (almost no characters), no complex combat mechanics, no cities to explore, not even side rooms in the main building. Very few games are brave enough to sweep away complexity in the environment like that; the resulting void gives a deep resonance to the game’s soul.

Simplicity and Inner Calm

There is certainly some amount of this in the overworld, but I’m not sure I can make a strong case that each colossus itself is “the simplest [configuration] consistent with its conditions.” (Phenomenon, p. 287.) Though it’s hard to say: for one thing, you’re trying to kill them, which isn’t the best situation to bring out whatever inner calm may be inherent in their natures. And, for another thing, colossi are, well, colossal, and manifestations of something still larger, so it’s perhaps natural for them to be somewhat elaborate. A bit of a stretch, but on p. 228 of Phenomenon Alexander shows a picture of “A carved Norwegian dragon. Very complex, but it still has inner calm.” And I think some of the same applies here.

The game design and mechanics are certainly close to the simplest configuration consistent with its conditions. Which brings us back to the discussion in The Void above; these two properties seem strongly linked to me.

Not-Separateness

The colossi are very much part of their surroundings: each time you encounter one you feel that it’s in the most natural place where it could be, that it’s an integral part of its arena. And the arenas themselves are of a piece with their surroundings: while the arenas typically do have some framing, you don’t just turn a corner and find that suddenly you’re in a completely different area with a colossus in the middle. Instead, you travel around, feel the the suitability of the area for holding a colossus increase, and then, well, there it is.

And there’s the not-separateness of you and your horse. Of you and the girl, of you and the girl and the colossi. Of the colossi from each other.

I’m not sure the game manifests this property as strongly as some of the others: the presence of The Void is so strong that the strong centers in the game are somewhat isolated from each other, that they stand out in the environment. Still, there is a deep underlying connection that brings them together with each other and makes that distinctness much less jarring than it would otherwise be.

Final Thoughts

I’m currently in the middle of reading The Process of Creating Life, which makes me wonder: what was the process by which these living structures were created? I can easily imagine it unfolding via the processes outlined in that book, where you start with a few centers and then transform them in a way that brings out those centers (and others that appear later), by elaborating one or another of the fundamental properties.

Start, for example, with the idea of a colossus. Then, to emphasize its size, add a second, smaller figure nearby. But even nearby isn’t good enough: have that smaller figure actually crawling up the larger one, to make the size contrast as vivid as possible, to emphasize that the larger is a colossus. Gradually elaborate the colossus, drawing from real-life models but also taking care to generate a sequence of centers that provide life at the scale of the smaller center, that shape the details of the gameplay.

And then generate echoes, the other fifteen colossi. Apply the same process to each of them; but what should the echoes be in deeper sense? Realize that, when creating the original boss fight, there’s a roughness, a majesty, a melancholy in the interaction; use that as the dominant aesthetic for the entire game. And, of course, we need a game world to set this in: create it in such a way that preserves that aesthetic, but that strengthens rather than weakens the colossi as centers, using the void as one of your main tools.

I have no idea if that’s what happened; I did some googling for interviews discussing the seeds of the game, and didn’t come up with much. Though I was struck by this interview where Kenji Kaido, in response to the question “What was the reason for not giving you anything to do between fighting each colossus?” replied: “It was in order to enhance the spirit of fighting, and so the team’s resources could be concentrated on the [colossi]. The contrast between the quietness of travelling and the fighting is more pronounced.”

Which they’ve carried off remarkably. More broadly, there seem to be three points that come through that combine to make the rich living aesthetic of the game:

  • Strong Centers and The Void: Everything in the game is designed to bring out the colossi; they have a huge impact as a result.
  • The individual colossi as living structures: Each colossus is beautifully designed, detailed via choices that bring out Alexander’s properties and result in a wonderfully alive creature.
  • A unified aesthetic: There’s a feeling of roughness, of age, of sadness, of wabi-sabi that pervades everything in the game.

If you’ve made it this far, thanks for bearing with me. (I fear that there’s more Alexandrian discussion to come; unsubscribe now!) Let’s all take a break and go play a game together…

christopher alexander on xp

October 11th, 2008

I was making my way through The Process of Creating Life last night, and was rather surprised to see Christopher Alexander mention XP! Here’s the quote (p. 198); emphasis and ellipses in the original.

This chapter was first composed as a lecture to the computer science department at Stanford University. After the lecture, I had a chance to hear comments from many of the computer scientists in the audience. Much of the commentary I heard went something along these lines: “This is really interesting…perhaps you should call it ‘evolutionary adaptation’ instead of ‘generated structures'” and “We computer scientists ourselves often practice various form[s] of evolutionary adaptation in software design. Good software grows, by steps with feedback and evolution, to something better…” And so on.

The essence of all these comments was what I call gradualism. It says “Yes of course, in the case of a complex structure, we cannot hope to get it right first time around, so we build it, run it, test it, fix it, change it…and keep on doing this so that it gets better.” What has become knows as Extreme programming is a way of doing this for software development, with a very short cycle of evolution and adaptation, repeated many times.

Of course I am in favor of small steps, of adaptation through trial and error, and of what we may call evolutionary adaptation (see chapter 8). But this is not the central point at all. After listening to all these computer scientists’ comments, and taking them to heart, I realized that I had failed, in my lecture, to emphasize the real essence of all generated structures. The real essence lies in the structure-preserving transformations which move the structure forward through time, and which are primarily responsible for the success of the generating process. The needed transformations are not merely trial-and-error steps, or some neat way of continually checking and making things better. In chapter 2, I have referred to the fifteen transformations which act, in all structure-preserving transformations, to move a while structure forward in a deliberate and explainable way. It is because of these fifteen transformations and their effect, that a whole may be said to “unfold.” It is because of these transformations that a whole becomes coherent, and beautiful, And it is because of this unfolding, and the way the unfolding processes work, that the structure is able to become “mistake-free.”

To assume that the point of generated structures is merely slow, step-by-step evolutionary adaptation, is to make the same mistake that early adherents of Darwinism made in biology—to assume that small steps alone, modification coupled with selective pressure, would be sufficient to get a genotype to a new state, hence to create entirely new organisms… and so on. This does not work, and is now widely recognized not to work, because it lays too little emphasis on the (hitherto) unknown transformations which actually do the hard work of moving the evolving organism through stages that lead to its coherence and its geometric beauty in the emerging genotype.

creating life

October 8th, 2008

I’m only a sixth or so of the way through The Process of Creating Life, but the ideas there are really getting my brain racing today for some reason. He gives these beautiful little examples of evolving living structures step by step: looking at those, you (or at least I) say:

  • What a great paradigm shift: don’t think of creating something by putting it together from the outside, instead create something by growing it outward from its center(s), with every step a living collection of centers on its own.
  • Those examples look really simple; maybe I could do something like that?

And right now (literally right now, today, this hour) I seem to be swimming in ideas that are pushing in that direction: I’m also reading the Presentation Zen book (which is full of wonderful ideas on a topic that, frankly, I spend very little time on these days, which perhaps has the benefit of making me more receptive to ideas out of the blue), I spent the last two days at Agile Open California, I was listening to a podcast on interactive fiction on the way home; invitations to creativity are all around us, if you just stop and listen for a second.

Which is all well and good, but how to harness it? Not in the abstract: how should I personally harness it?

Hmm, here’s a question: forget creating a living structure externally, the living structure that I’m most directly involved in is my own life. What are my life’s Strong Centers, my life’s Levels of Scale, my life’s Boundaries, my life’s Good Shapes, my life’s Echoes, my life’s Roughnesses, my life’s Voids, my life’s …? And how can I nurture and grow these centers, enriching them, giving birth to new ones, while helping to also enrich the centers around me?

agile open california 2008

October 7th, 2008

Agile Open California 2008 was yesterday and today; like last year, it was a wonderful experience. I’m a bit too tired to post much now, but the bare-bones report:

It started off a bit slow: in a corporate building (which was perhaps more functionally laid out than last year’s, but sorely lacking in sailboats and the Golden Gate Bridge), with a main room that was badly shaped (long and narrow) for all the participants to be all sitting in a circle together. And then came the call for sessions, and a lot of people seemed to have actual presentations that they wanted to give, instead of conversations that they wanted to have. (In retrospect, such people were probably overrepresented among those who were first to nominate their sessions, since they clearly came prepared.)

But then, the magic of open space begins: just like last year, I had no intention at all of leading a session when I showed up, but then I found myself thinking “hmm, we’re about linking principles with practices, and I just saw a very interesting set of principles recently”, and the next thing you know I was up there suggesting a session on Christopher Alexander’s The Nature of Order. And, showing my lack of imagination, I then remembered another book that I’d read recently, and decided to propose a session on code generation. (Which really was a bit half-baked; once I’d thought about it for a bit more, I decided that what I really wanted was a session on Refactoring Writ Large. Fortunately, I’d scheduled it for the second day, so I was able to explain the changed title during the evening news.)

I started by going to a discussion on distributed teams, which is certainly relevant to me at work right now; I decided to experiment a bit with wandering around, so I left halfway through and stuck my head in the other sessions, but decided that none of them suited my taste (and in particular the one other I was interested in seemed to be more of a presentation than a conversation), and I ended up back in the distributed teams conversation. In another time slot, I started with one on tools because the person running it seemed like the sort of person who had interesting things to say, but I quickly decided that I wasn’t interested in getting the sorts of things out of it that she was, so I went to one about performance reviews in an agile context, which turned into a lovely discussion among four or five of us. A third session I attended was on TDD and emergent design: the person running it wanted to have a chat related somehow to the topic, had no idea how it was going to work in detail, so it took a few minutes to get going; but 15 minutes into the session we were having a great conversation, and probably a more interesting one than if the convener had had a stronger agenda at the start! And, being a sucker for lean, I couldn’t skip the one on lean and TOC; the convener had a presentation available, which he was willing to either use or not use; I actually asked him to run through some of it, because the one slide he had up got me curious, and then he ran into a rather, um, aggressive crowd. I felt sorry for the poor guy, but I guess that’s the way these things work: the people in open space conferences have their points of view they want to express and their ways that they’d like the conversation to flow, and the mere fact that you’re convening a session doesn’t give you any particular privilege to get the crowd to play along with you!

The second day was a really wonderful example of what can happen at conferences like this, where you can find a small group of people to explore any topic you’re curious about: I started my day discussing agile and adaptive parenting with three others, and my Christopher Alexander topic was also quite far out on the fringe of the conference. (And I’m very grateful to the other people who attended that session for being willing to go along with me and help me try to figure that out. I’ll definitely put up a longer blog post about that one.) I also went to one on pride, which was interesting because, having just listened to Bob Martin talk about craftsmanship on the drive up, I’d assumed it was about pride as a good thing; but the convener had intended it to be about how pride could cause problems on an agile team! This lead to a great discussion, going in all sorts of directions. And I had my Refactoring Writ Large session, again a pleasant discussion.

I was surprised at how few repeat participants there were—Rob Myers, where were you?—but there were several faces that I was happy to see again, several people in my Twitter feed that I was happy to meet in person, and several people whom I met for the first time whom I’ll look forward to interacting with in the future. In general, the “gathering of the tribes” feeling was a welcome reminder: I’ve spent a lot of time recently in video game communities at the expense of, among other things, blogging about agile, and this was an important reminder to me that agile is important to me and that I don’t want to neglect that part of my life.

Going back to my misgivings at the start of the conference: for all I know, there might have been many sessions that were more presentations than discussions. (Just comparing the number of participants, the number of simultaneous sessions, and the number of people in the sessions that I attended suggests that I spent more time in the fringes of the conference than in the popular bits.) But I wasn’t in them, so even if that’s the case, it doesn’t matter to me: I got out of the conference what I wanted to, and if other people wanted something different and got that different thing out of the conference, that’s wonderful! I left the conference feeling energized, and judging from the atmosphere in the room, I was far from the only one.

And I will stick with my opinion from last year: open space works remarkably well, to the extent that I’m not sure I want to go to conferences run any other way any more. (Well, I guess that’s not completely true, given that I am very much looking forward to AYE next month, but I bet that conference has its own idiosyncrasies in its organization.) It’s amazing how well it works to gather together people who are interested in a topic and let them run free.

rock band drums

October 5th, 2008

As previously threatened, I tried out the drums in Rock Band today. And they’re fun! But mysterious.

It turns out that skill in playing plastic instruments does transfer, at least to some extent: I started on Medium, and I was passing the songs fine. For the first few songs, my leg hurt like crazy; then one of the pre-song splash screens told me that I could keep my foot down pretty much the whole time, only raising it to play the pedal, and after that, my leg felt a lot better.

What was disconcerting, and remains disconcerting, is that I’m missing a lot of notes, and I can’t tell why. Of course, sometimes I can tell why: I’m playing the wrong thing! But sometimes it seems to my brain and ears that I’m playing the right thing (I was going to say “playing the right notes”, but that’s not correct – pads? Hmm, I guess I’ll stick with notes) and I’ll still lose my streak. Some of that is probably simple user error, but I think there’s something more subtle going on in some circumstances: if I fall out of a streak partway on the seventh iteration of a repetitive sequence, then clearly my hands and feet are capable of getting it right, so if it sounds right to my ears, what’s going on? In fact, I caught a few situations where I fell out of a streak immediately after hitting the last note in a star sequence: clearly I got all the notes right, since I got star power credit for the sequence, and I hadn’t played any notes since the end of the sequence, so how could I have lost my streak?

My best guess is that I’m occasionally double-tapping somehow, especially with my left hand; I’ll need to experiment with more forceful strokes or less forceful strokes or a looser grip or a tighter grip or something until I figure out what’s going on. It was fairly frustrating: I went through the first 15 songs in the morning, and they generally felt quite easy, yet my longest streak was 63 notes, and on half the songs I didn’t even reach a 4x multiplier once. (I never got 5 stars; I think I only even got 4 stars on one of those songs.)

I did better in the afternoon: I had streaks over 100 notes several times, and had several songs where I hit 4x multipliers repeatedly. Still no 5 stars, though, and still more 3 stars than 4. Ironically, I frequently had an easier time getting good streaks going on the harder songs; in fact, I did my best on the next-to-last song. (Is it Run to the Hills? I can’t remember.) I did my worst on my old nemesis, Green Grass, despite its only being tier 6 on drums; it’s just really long and had a few sequences where my foot and left hand accidentally got synced up instead of being on opposite notes.

A very different feel musically than playing guitar: a lot more repetition, no solos. Which was reflected in the way star power works: you can’t turn on overdrive at arbitrary points (though you do have frequent opportunities), and in fact I found it a bit annoying to hold off on using it, but that’s fine because there aren’t as many hard sections where you need lots of stored-up overdrive to rescue yourself. (Or if there were, I didn’t notice them on Medium.) Interesting to see the way the notes and rhythms were varied, especially on the harder songs; I should clearly pay more attention to the drum parts when listening to music.

Lots of fun; I certainly wasn’t expecting to play through all the songs in a single day, but it’s quite addictive. (I skipped the bonus tracks, but I did do Still Alive.) I even tried the first five songs on Hard; quite doable, but I imagine I will run into trouble on the later songs at that difficulty level, and my foot definitely needs training. (I imagine my hands will need training as well on the later songs, as the notes come faster, though that wasn’t an issue on Medium.) Fortunately, I saved a link to this Game | Life article which gives some useful tips; I’ll have to study it. And maybe I’ll hold off on Expert until I’ve switched over to Rock Band 2, so I can take advantage of its improved drum training modes?

But I’m holding off on RB2 for the time being: my experiences today have confirmed my idea that I want to spend more time exploring what the original has to offer before moving on to the sequel. (Though I imagine that guitar will continue to be my primary instrument.) I’m not done with drums yet, I haven’t tried vocals, and I suppose I should even try the bass. And there’s some DLC I want to try out, too, though that could conceivably wait until after I’ve seen what RB2 has to offer.

What a game Rock Band is. “Game” isn’t even the right word: what a platform, what a medium. It seems entirely likely that I’ll still be regularly playing it or one of its successors a year from now; I wouldn’t be surprised if I were doing so a decade from now.

brain age 2

October 4th, 2008

Not much to say about Brain Age 2. The formula is the same as in the original; if forced to chose, I probably like the new challenges a bit more, but not enough to make a difference. (Speaking of which, how do non-piano players do on Piano Player?) And I’m not nearly as into sudoku as I was when playing the first game.

Don’t get me wrong, it’s quite good for what it is, I’m just not so interested in that right now.

the rock band guitar

October 4th, 2008

When I last discussed Rock Band, I’d remembered the existence of the solo buttons, and thought I should give the hardest songs a try that way. So, the next weekend, I put down my GH3 guitar, picked up my Rock Band guitar, and gave Flirtin’ with Disaster a try.

It took a while to get used to the feel of the guitar and the location of the solo buttons; after a bit, though, I was rather enjoying myself on the solo. It felt a bit odd never to have to strum, but there’s enough to think about in that solo to keep me busy, and the failure modes felt more realistic than when I was playing the traditional way. (I.e. I missed a few notes, but didn’t completely fall off the rails when I messed up as I did when doing hammer-ons/pull-offs.) Not that I really know what realistic guitar playing feels like—I’m mainly a piano player, though in a pinch I can play Alice’s Restaurant on a guitar over and over again—but messing up the rhythm on a real guitar doesn’t kill you.

So, after a bit, I managed to finish the song: in fact, it said that I’d done a good job on the solo, rather better than I did on the non-solo parts! After which I spent an hour or so with Green Grass, both in practice mode and with the real mode. Again, I did noticeably better than with the old guitar, but this time it wasn’t enough to make a difference: that second solo is really long and, in a few places, really hard even with the solo buttons. Eventually, I decided that I wasn’t motivated enough to finish it: I’m fairly confident that I could if I put in enough effort—there are only two areas in the second solo where I absolutely need star power, and there are enough manageable star power recharge sections between them that, if the stars align, I should be able to squeak by—but it would probably take a whole afternoon, I’d largely be doing it for the achievement (since I still wouldn’t be able to finish the song at all reliably when playing with others), and it’s not worth the effort for me. (Dan, can you finish that song on expert? Do people at Harmonix generally find it pretty doable?)

After that, I decided to go through the bonus tracks to figure out which ones I was going to export to RB2. (Answer: Brainpower (and I really should go buy a Freezepop album); Day Late, Dollar Short; I Get By; Outside; Time We Had.) And, at some point during this process (when playing Seven, I believe), I realized:

The Rock Band guitar is awful. Sure, having the solo buttons is nice during hard solos (though I actually prefer the way hammer-ons and pull-offs play during the fast non-solo bits, e.g. the start of Green Grass). But you have to put up with lots and lots of pain to get those solo buttons, and in no way is the tradeoff worth it. It’s not an accident that I did better on the solo of Flirtin’ with Disaster than I did on the non-solo parts: the neck buttons are hard to press reliably, the strum bar is a lot worse. Initially I’d chalked this up to not being used to the guitar, but by now I’d been using the RB guitar for a couple of hours, so I should be used to it enough by then. But I was still having a hard time making it through Seven; I switched back to the GH guitar, and I couldn’t believe how much better it felt. My fingers could just glide over the neck buttons, my strumming improved drastically, and I was suddenly enjoying myself, instead having the game feel like a chore.

Which is, after all the point here: I’m not doing this because of the achievements, I’m doing this because I enjoy the game, because I want to be able to feel as much of the music in the songs as possible, and because I want to do so in multiplayer mode. In particular, I was hoping to be able to play expert more in multiplayer mode, since the songs just aren’t as musical in hard; but the difference there is dwarfed between the difference between the feeling of the RB guitar versus the GH3 guitar.

So: no more solo buttons for me. I imagine the RB2 guitar is better, but at this point I don’t trust Harmonix’s instrument production skills enough to be willing to pay for it without giving it a try first. (Anybody in the Bay Area have one and want to let me try it? And what is the deal behind the instrument quality difference, anyways? I accept that Red Octane has a lot more experience in that area, but Harmonix is full of musicians, I can’t believe they don’t find their guitar frustrating to play. Is it that hard to get neck buttons that feel good?) Will the GH4 guitar let you use the touch pad as solo buttons? If so, I’ll probably give that a try at some point.

So my journey through RB expert guitar comes to an end. I guess it’s time for me to try out the drums next?

random links: october 2, 2008

October 2nd, 2008

delany on violence in narratives

September 29th, 2008

I was reading Delany’s About Writing recently when I ran across the following (pp. 408–409):

Excitement, Drama, Suspense, Surprise, Violence

Each of these five nouns names a very different effect. What makes so much popular narrative (especially in films and TV) seem so mindless is that someone, usually a producer, has mistaken one for the other or tried to use one in an attempt to get the effect of another. Most often violence is used in places where one of the other four might have been more interesting or effective.

Consider your response to violence in real life: if you are walking down the street and a stranger thirty feet (or even three feet) away is suddenly injured or hurt, often your emotions lock down. The very shock shuts off any immediate emotional reaction, sympathy, sadness, or empathy. Violence to strangers armors us against involvement with them. The fact is, this is a useful reaction, whether we decide to help the person or simply to move quickly away to escape the danger ourselves, or because it’s not feasible for us to do anything useful just then and we want to make room for someone who can. Clear thinking is necessary in such situations, not emotional involvement and personal identification. That’s probably why we’re wired like that.

[…]

Violence can be surprising, but it is not interesting or exciting or involving in itself. What caused it may be interesting. Its effects may be of intellectual interest. But it is not emotionally interesting in and of itself. On the contrary. The psychological use of violence in art is, paradoxically, not to engage our emotions but rather to put our emotions on hold, heighten our perceptions, and get us ready to think. But since so few public narratives—as offered by television and film—give us much to think about, most of it is wasted.

The reason why this struck such a chord with me is my recent experience with Deus Ex. I’m enjoying the game very much, but, as I mentioned before, the parts I enjoy the most are those with the least violence. There are various reasons for that, of course, and many of them have more to do with my personal idiosyncracies than any truth about narrative. But I’m fairly sure that Delany is onto something here: my reaction to violence in video games isn’t to be overcome with sadness, to consider the enormity of what’s happening. Instead, it turns into a puzzle, my brain shuts down sympathetic lines of thought and tries to come up with the most economical way (on strictly personal survival terms) of making it through the situation.

In particular, in retrospect I’ll largely disagree with Corvus’s contention that “the enemies in Deus Ex have a very important narrative purpose. They force you to seriously consider how to approach any given situation and put a human face on the political struggle, emphasizing that the true cost of these sorts of schemes is the little guy, the grunts, and the innocents.” If the game were designed differently, with fewer enemies and more getting to know them first, perhaps that would happen. And, actually, that did happen to me to some extent: I didn’t want to kill my brother and I didn’t want to kill UNATCO troops because the game had given me experience with them before I had the chance of killing them. And the Naval Base level starts out with people who might be considered as enemies but who are actually on your side, and throws another one in later on (if you take the appropriate route through the level); largely because of that, I suspect, I actively avoided killing some of the other enemies later on in the level. But, in general, the enemies were just another puzzle to get through over the course of the levels, and not a puzzle that I happened to particularly enjoy.

In fact, Delany also has something to say on how violence leads to intellectual puzzles: the bit that I excised in the ellipsis above is the following (ellipses in the original this time):

Numberless times now I’ve been handed manuscripts by young writers that begin in the darkness with a shout, a scuffle, a thud, followed by the sound of breaking glass, whereupon people rush in to find Colonel Mustard (or his equivalent) dead in the sitting room. Alost immediately the writer follows with the life story of Colonel Mustard, under the impression that, because Mustard has been killed, the reader is now interested in him. But this is to confuse a strategy from the genre of the analytic detective story (where it can indeed be quite effective) with that of general fiction—usually because so many film and TV producers have already made the same mistake, and simply through unexamined exposure it comes to them second nature.

What’s interesting about Colonel Mustard’s murder is not, of course, Colonel Mustard. Rather it’s the twisted iron bar, red paint at one end and blue at the other, which is lying on the floor, beside the mantelpiece, three feet from the body. One end of the bar was on top of a calling card, with no name on it, but which nevertheless showed a golden seven-point star with a black band across it. Now, the bar itself had obviously been used to break three pieces of glassware, which had been sitting on the mantel—the shards were all over the green carpet. Nevertheless, while the side of Colonel Mustard’s head had been beaten in with a blunt instrument—surely the cause of death—there was no blood on the bar! As is the blue on the other end, the red is clearly enamel paint…

In short, the potential for mystery and interest is entirely intellectual—for those readers who enjoy a good mystery. The violence at the beginning is precisely what has closed off the possibility for emotional identification, however, and moved our interest (if we have any) to the intellectual plane: Who did it? Why? And how? Those Sherlock Holmeses, Philo Vances, Philip Marlowes, Jane Marples, or Matt Scudders are ready to investigate…

The details of the effects of violence in a mystery are quite different from those in most video games, but I think the basic point holds very well: when I get shot at in Deus Ex, this serves to emphasize the fact that I have to accomplish something, that I have a potentially interesting puzzle in the choice of path and mechanisms by which I’ll accomplish that, and that the people shooting at me give a certain bite to my choice of path and mechanisms. Which is great, it’s part of the reason why I love video games, but it has nothing to do with emotions.

One last quote from that section, which may be a useful thought for somebody who is trying to heighten the emotional interest in a video game:

What does tend to get our emotional interest and identification is watching someone put out energy to get something she or he wants. But, in an attempt to make “something happen,” don’t confuse that with violence—a murder, a fight, or a robbery.

(While I’m on the topic, by the way, I’ll give a shout out to my fellow Delany-loving VGC participant!)