There are a number of recurring tropes and themes in my social network: individualism, collegiality, open-minded research, appreciation of autonomy, geekiness. Plus a few others.
For maybe nine months a number of us have been microcoworking at Primo Coffee in Ann Arbor every Wednesday, and meeting Fridays as time permits in the lounge at Pure Visibility. Microcoworking (or µcoworking) is not Coworking in the traditional sense of cubicles and sensible desk space and a mail drop, the way the people on the Coasts and Europe would have it. We all sit and work in cafés anyway; now we sit every Wednesday and work together in the same café. That’s all there is to it.
That and much more, of course. Because sitting together, we are one step closer than a mere Twitter network, an iChat. We’re in the same room, at the same table, and when I see something I can tell my friends about it immediately; when somebody wants an opinion they can ask it immediately; when one of us has an Andy Hardy moment and says, “I know guys! Let’s start a company!” we do it. Right there.
It works well. It’s low-impact social networking; no business cards required, no elevator speeches, no push to expand into The Next Google, no striving for VC. We’ve escaped all that crap.
You can have our share. Really. No, please, go right ahead.
We were just going to throw it away.
For a few weeks now we’ve been starting “Working Group” meetings as well. Maybe we don’t know what it’s for, and maybe we do, but innumerable µcoworking conversations on the theme of “We ought to do something with that idea,” have led to a group of the same folks, plus some extras, who just want to make some stuff together. We all have these projects: I want to put books online; Dan wants to show people how their stuff came to be; Bob wants to make Zigbee work for us (robots!); Laura wants to do laser graffiti. And so forth.
We have all these conversations, and we all end them by saying, “But I can’t do that by myself. Someday, when I have time.”
This when we’re all sitting on our collective asses surfing in a café, mind you. “When I have time” is code for “not by myself”, at least in many cases.
We met once last year, and once so far this year, and now the regular sessions begin for real. We’re working out the details of how things get done as we proceed.
But as a meta–design spike, four of us have already started experimenting. We’re doing a simple genetic programming project together. I get to polish my GP class notes (I teach a class now and then, and want to start one up here in town in the coming months); some of the other folks get to explore the potential and enhance their grasp of the Way Things Will Work; and we all get to try some kind of weird Agile Research thing out. We’re trying to do XP (1.0) as much as possible; we’re slipping a bit on Whole Team, and some of us are learning Python on the fly, and I confess we put the cart before the horse a bit by spiking before we completely wrote out story cards… but I think we’re doing what we can to comply with standard XP as she is spoke.
Now X“P” as a research methodology is an interesting prospect, frankly. There are some unanswered questions about direction and exploration vs. exploitation I’m itching to address… but we need to practice a bit first.
So what we’re doing is this: we’re re-implementing the Push3 language in pure Python. Push is Lee Spector’s almost-unreadable substrate for strongly-typed genetic programming with recursion and iteration. It’s a neat academic-flavored language that makes sense if you squint at it.
Until you learn a bit about actually doing GP. And then it becomes a tool you should absolutely have in your armamentarium. Because Push is a language (or design pattern, or dessert topping) that gives you a lot of structure in evolved programs (automatically generated algorithms) that traditional S-expression based genetic programming fails to offer.
So Bob and Brian and JP and I are sitting down periodically and re-writing Maarten Keijzer’s description of Push3 in python, so we can (1) expand the language to solve some interesting not-at-all-academic problems by evolving novel intellectual property, (2) set up a unit tested, readable, expandable, distributed version of the infrastructure, and (3, once again) establish a kind of baseline rapport and methodology for doing pure research projects in an “agile” way.
(4) without touching C++ with a ten-foot pole. Sorry, Maarten. Ick. Does not want.
Now Push3 is a sprawling epic of a language. Full of counterintuitive stuff that makes you squint and cock your head and scratch your beard and that kind of thing. So we’re creating a subset of the language: one with no recursion, no iteration, no variable assignment. Those are all things that are “simple” in Push anyway: they’re just additional operators in the standard Push interpreter, and they don’t even do much that’s different from the base stuff.
And that minimal language, which we’ll use to fit some simple arithmetic functions and a wee bit of logical function-mining, will be called Nudge.
Watch for more on Nudge as it develops. Maybe, if I’m very diligent, I can manage to scrape together a bit of a copy of Ron and Chet’s accounts of their pair-programming essays. Maybe we can even draw them in with us. We’ll see in a bit.
And thus tonight I am reminded of something from long ago, that has somehow fallen off the Googleweb. The future. By way of the past. Push is 2004 tech. And yet it sits there, unremarked.
Look upon it, and fathom the unfathomable dynamics of your life, ten years on.
The short version: this is awesome.
The longer version follows.
“There is a spike between the ones who say there is a spike and the ones who say that there isn’t.”
Part of the innate suspicion of processes with names (that falls out of maybe some of the stuff in your opening paragraph) means that, hey, maybe we’re working on the same project, but some of us care more than others about whether some regulator looking in would call it xp. In other words, there are metaphors, there are processes, and there is just observon-open-fire class _doing junk_. Making tests fail, then pass.
So we look at coworking and microcoworking falls out, arbcamp was the thing that it was, push3 has to become Nudge.
So maybe there’s a process thing in there, too.
But the values of “extreme programming” — such as they are — are crappy little monkey patches on the basic hierarchical, economic constraints of projects and teams and customers and employees coming together. And those are the constraints we’re picking at, or at least that I’m picking at. So what is that “Whole Team” thing actually about? We know it’s accidentally about a bunch of males in khakis and blue shirts (or, local flavor, jeans and warm coats), but what’s it really about? Especially when the “customer” is more like a “dungeon master” — a temporary burden rather than a gilded throne.
This strongly correlates, in my mind, to the question of when we do this. Is this a day thing, or a thing for night? For the week, or the weekend? At the cafe or the office? So far, it doesn’t happen at my office — and not just because the conference room still has an echo.
Where to? What next?
Pingback: Brian Kerr | links for 2008-01-24