Passionate Developers Behind Bars

It’s been a long time since I posted anything about how the JavaGuys are doing.

Perhaps the simplest update is that the fellows inside have decided that they no longer want to be called the JavaGuys: now they’re the Agile Factory. Part of the rationale for the name change is that they’re less interested in learning an isolated skill than they are in learning a way of life. More on that later.

Another change is that we’ve made JavaScript a first-class citizen. We’re sticking with Java, but we’re also learning to write respectful JavaScript and to test-drive it with Jasmine. This is another driver for the change from “JavaGuys” to “Agile Factory.”

A related change is that Guy Royse, of Pillar Technology, has begun coming in about every other Tuesday specifically to help the Agile Factory with JavaScript.

Tonight, Kristen Smith, also of Pillar Technology, came in to participate. Guy, Kristen, and I are all proficient in Java and JavaScript, so we hopped around the room from pair to pair and helped whoever seemed to need helping.

Also, Jesse Cox of Interim Healthcare has come in several times (although not with me, since our schedules don’t mesh) to talk with the Agile Factory guys about Android, and has lit a fire inside several of them that is driving them to learn everything they can about test-driving Android code, even though they don’t have any actual devices, since prisons don’t generally like to see things with radio transmitters in the hands of prisoners. They use the Android emulator, which is painfully slow to begin with and even more so on the obsolete cast-off computers they use; but they’re committed enough to learning Android that they make it work anyway.

These days Mark Roberts is pretty much running the program on the inside, with significant help from Will Land and Dean Preston. We’ve discovered that it works much better if the fellows inside decide on the rules and enforce them than it does if we from the outside invent rules to impose on them.

Speaking of rules, the prison rules say that prisoners, whether part of the Agile Factory or part of any of the other programs that meet in there, can’t be in the Lifeline room with all the computers unless a supervisor is present. I count as a supervisor when I’m present, but I’m only there on Tuesday evenings, because I have a day job of my own. The supervisor who’s present during the day works for a non-profit organization that is funded by a government grant, and that therefore must turn in quarterly reports on its operation in order to maintain its funding.

I’ve never been much concerned with the organization, since my work with the Agile Factory is entirely volunteer, so I didn’t know about the quarterly-report requirement until tonight, when Mark Roberts offhandedly gave me a copy of the report he just finished writing.

I thought you might be interested in reading it. Here it is:

Programmers in the Agile Factory are developing skills that will make them compelling prospects for employment in the software industry. The men in the program work closely together to learn software craftsmanship from outside professionals and from each other. It is a highly collaborative discipline that utilizes test-driven development, pair programming, and the study of advanced programming principles. While the Java programming language is the primary language of study, the men learn everything it takes to build a modern web application from the ground up. They study test-driven programming in Java and JavaScript and are exposed to other languages such as Scala.

These men learn how to develop in teams by utilizing Agile methodologies. Agile development is a cutting-edge style of software creation that demands collaboration and cooperation between programmers. It is designed to provide valuable software to the customer on a regular basis. Product advancement is faster, software errors are reduced dramatically, and the program is designed to rapidly change as the business needs change.

Students spend 28 hours per week of lab time. The men are also expected to spend at least 12 hours of additional time outside of the lab reading and studying the concepts needed in the program. Men who are actively engaged spend at least 40 hours per week working toward a career as a software craftsman in Agile development. The program is designed from the ground up to be a mentoring model. Experienced programmers are expected to pair daily with men who are learning the basics. The culture of the Agile Factory is summed up in the phrase, “You must care about the guy next to you to be in the Agile Factory.” Everyone in the group is required to invest in the men around him.

The structure of the Agile Factory is egalitarian. All voices are heard and serious input is always given consideration. It is an open environment where everyone is expected to work with everyone else on a regular basis. This has created a healthy collaborative environment to prepare the participants for healthy collaboration in the workplace. Men are taught the value of taking and giving constructive criticism and exercise those skills every day. Participants are actively driven to express their ideas to the group to build the communication skills expected in an Agile workplace.

If you’re warping directly in here, you should know that this story has a Part I.

When I got to the prison on CITC morning, I was determined to be the first one there, so that I could greet the other attenders as they arrived. I arranged to get there just under an hour early.

But it was not to be. Joel Helbling from Indiana and I arrived at the same time and walked in together. (Turns out he hadn’t driven all the way from Muncie that morning; he’d driven in the night before and stayed at a hotel in Marion.)

After that, the only bump in the road as people were coming in was that Officer Evans behind the counter in the A building had no gate pass for us. I had been told that the gate pass had been prepared and signed, so Officer Evans began searching for it. It occurred to me to call my boss, Jo Dee Davis, and see if she knew anything about it. As it happened, yes she did: she had it in her hand, she was having coffee in Marion, and would show up at the prison a good ten minutes before we went through security. So…not really much of a bump in the road after all, except for Officer Evans who had to do some fruitless searching.

By 9:00, we had everybody we were expecting (we all knew Alyssa Diaz had decided to stay home and keep her flu to herself) except Sherief Gharraph, Guy Royse, and Wes Tarpley. I gave the folks who were there a short briefing on what to expect through security and inside the prison, and then we filed through the metal detector, signed in (except for a shall-remain-nameless few of us who forgot), got an invisible-ink hand stamp, and received a visitor-badge envelope with a clip into which we slipped our driver’s licenses so that our picture was showing through a cut-out corner.

We waited for awhile in a back room for Sherief, Guy, and Wes, but then decided to go on in without them to get things started, and have them escorted in later when they arrived. However, just as we made that decision they showed up, so we got to go on in with them.

One addition since the last CITC was a new crash gate just outside the A building in the back. Now, when the door is buzzed open and you walk out the back of the A building, you’re in a big chain-link cage with another locked door on the other end, which won’t be buzzed open until the door in the A building locks shut. We filed quickly out into the cold so that we could get the building door shut, and the inner door was immediately opened for us so that we could hustle out of the cage, across the wind-swept gap, and into the warm main building.

I had an interesting moment inside Control 1, which is another crash gate in the main building, this one between the region where the administrative staff has offices and prisoner country.

We had a large group of people coming in–sixteen strong–and the security folks in the A building had sent us all in on the strength of my escort, since I have a contractor badge. However, contractors are small fry in the prison when it comes to escort duties. Usually we escort groups of two or three; larger groups are escorted by correctional officers or even white-shirted sergeants or lieutenants.

The officer in Control 1 wasn’t ready immediately to accept a contractor escort with fifteen charges, so he gave me a grim look and got on the phone with somebody. It took about three or four minutes, during which I figured we’d be sent back out of the crash gate to wait until a CO could be spared to escort us; but eventually he was satisfied and sent us on into the prison.

After that, a long walk back to the Lifeline complex where CITC is held, several minutes doing another round of sign-ins, and we were–among friends.

Mark and the guys had everything set up, with a cramped circle of chairs in the front room (31 participants is the most we’ve ever had, by at least half a dozen), and pairing stations in two of the other rooms, each with an installation of the development tools we’d need, a sheaf of scratch paper, a pen, and a stapled-together copy of the Evercraft kata from George Walters’ github page, compiled by George Walters and Guy Royse.

I had a sack containing a number of decks of story cards I had made from the kata, so I engaged Dean Preston to put a stack next to each machine. At the time, I didn’t know the stations also had printouts from George’s github page, so the pairs ended up with both a deck of cards and a printout, which would prove confusing.

One thing I notice about CITC in general is that when the outside folks first come in and sit down in the circle, there’s a fair amount of self-segregation going on: long stretches of outsiders, then long stretches of insiders, then more outsiders, and not much interfacing between the two groups. Usually that changes as the day wears on, but CITC9 started out right down the traditional path in that respect.

Once we had everyone seated, I talked for quite awhile about the kata and methods for addressing it. I was aware of the fact that we had three women in the group (Amber Conville, Chelsey Baker, and Margaret Pearce), and I remember from high school that Dungeons & Dragons (on which the kata is based) wasn’t particularly popular with girls, so I was trying to be clear about the nature of the kata to avoid confusion.

Uncle Bob reassured me, though. He said, “Don’t worry, I used to play with girls all the time in high school.” Somebody clarified: “You mean play Dungeons & Dragons with girls?” Yes, he did; but we all had a nice laugh anyway.

Finally, we got down to introductions, which were done in a way I had never experienced before.

Each person, before he introduced himself, had to repeat the introductions of everyone before him in the sequence. This helped cement the memory of those introductions not only in the person introducing himself but in everyone who heard those introductions so many times. Moreover, an introduction consisted not just of one’s name, but also of an accompanying noun that was connected to the name in some way–perhaps by rhyming, or by starting with the same first letter.

It took a long time, but I have to admit that it worked. It’s possible that, a day later, I may even still remember not only the names of the people in the circle and their chosen nouns, but also the order in which we all sat. Let me see:

Dean with Green
Micah with Machine
Will with Washboard
Gareth with Grapes
Ezra with Everything
Brian with Bike
Ron with Radio
Matt with Map
Mark with Ark
Will with Willpower
Rick with Ridiculous [not a noun, but we let it slide]
Nick with Noodles
Jason with Java
Dusty with Data
Guy with Try/Catch Block
Jesse with Juice
Ovi with Olives
Chelsey with Challenge
Margaret with Memory
Amber with All the Shortcuts [reference to her well-known goddesshood with Eclipse]
Bob with Uncle
Jeff with Jams
Joel with Jalapeños
Tim with Tomatoes
George with Goal
Wes with Mess
Sherief with Leaf
Mike with Mistake [perhaps a comment on the wisdom of the introduction method]
Ron with Red
George with Gooey Cheese
Dave with Dragons
Dan with Plan

Well, I’m pretty sure I got everybody (there are 32 in that list because Matt “Map” Hutzler participated in the introductions but didn’t code with us), but I may have addled the order in a couple of places. However, other participants who read this blog may well be able to correct those mistakes in the comments below, which is still a testament to the effectiveness of the method. But it was after 10:00am by the time we finished, so perhaps it isn’t appropriate for all groups of 32 people.

But once we were duly introduced, the time came to pair up and get to work. Since there were 31 people in the group, fifteen from the inside and sixteen from the outside, I was odd man out and took a facilitatory role. I just wandered back and forth between the rooms and among the desks, looking for folks who, given the lack of Google in prison, might have questions about Java syntax or semantics. Many of the inside folks were just starting into Java (one of them had programmed in nothing but line-number BASIC on a Commodore 64 before Tuesday of that week, when he joined the Java class), and many of the outside folks did not have Java as their first language.

I got a few simple questions, but mostly what I saw were pairs of developers hard at work on an interesting problem. I was looking for body language telegraphing stress or discomfort, from all the outside folks but particularly from Chelsey and Margaret, since they were both A) women and B) new, but I didn’t see any. Except for the women, and except for Uncle Bob, who will stand out in just about any crowd, it quickly became harder than I expected to distinguish the inside folks from the outside folks.

Since we were in a prison, and since I was largely responsible for the event, I spent a fair amount of time counting, just to make sure nobody had wandered off. For several minutes during that first cycle, I became concerned because my counts weren’t coming out correctly. Then I noticed–hopefully he won’t be offended–that I had been counting George Walters as a prisoner. Once I corrected for that, everything was fine.

As it turned out, there were some video folks there who were interested in getting footage for an upcoming documentary on Coding in the Clink (perhaps along with other similar programs at MCI) to be shown in the prison. They wanted to record people pairing, they wanted to record our retrospectives, and they wanted to pull various people aside at intervals to interview them in front of a green screen. I asked them to let the first retrospective go completely unmolested, since most of the people there had never been to a CITC before and needed the experience of a whole cycle for context; but then they were welcome to anyone who agreed to be interviewed, as long as they didn’t take too long.

The first cycle ended all too soon, and we congregated back in the cramped circle of chairs for a retrospective. There was a little more mixing between insiders and outsiders this time, but the three women remained jammed together in a clump. The contribution I remember most from that retrospective was a deferred discussion of why try/catch blocks are bad–I’ll have to explain to the guys later that they’re not intrinsically bad, but if abused they can lead to some really pernicious problems–and a comment from Uncle Bob that it seemed that most of what we were testing was getters and setters, because of the way the kata started. He hoped that we’d eventually arrive at a point where we could refactor the design to get rid of the getters and setters.

Presently, we picked new pair partners and sat down at new machines and continued with somebody else’s code. The rule was that, even though what we encountered was probably not much like what we had started with, we would try not to rip out the existing code and replace it, but rather do our best to be faithful to the original design intent of the pair before us, so far as we could divine it.

I say “we”–really I mean “they,” because once again I was relegated to wandering in and out and around and around and facilitating.

While answering a question, I discovered that there were some pairing stations that didn’t have decks of story cards at them. Huh, I thought. I went and found Dean and interrupted him and asked him where the missing decks were. There aren’t any, he replied. He had put a deck at every computer until he ran out of decks, and just left the stapled-together kata printouts at the others.

Well that didn’t compute: I had had the print shop print more than enough decks of cards. I had taken the number of outside attenders–17–and rounded up to 20, and planned to order that many decks of cards. Then I thought, whoa, we’ll be pairing, we only need a deck for each pair, not each individual. So I ordered ten decks instead.

But of course I was forgetting that each outside attender (almost) did represent a pair: there would be fifteen pairs, not seven and a half. So I printed ten decks when I should have printed at least fifteen.

Oh well–nothing for it now but to improvise. So we (they) improvised. I was really glad Mark had printed out the kata.

Once again I was watching for tension and discomfort in the pairs, and this time (at least I believe I remember that it was the second cycle) I saw something. Margaret Pearce was pairing with Dave Travis. They were talking together about something on the screen, and it happened that they both reached to point at the screen at the same time. Their hands might have inadvertently touched, but Dave snatched his quickly away to avoid any contact. That’s reflex: prisoners can sustain non-trivial punishment for initiating physical contact with just about anybody (but especially women) if it’s judged to be in the wrong context, so in general they just don’t, by habit.

As I continued, I noticed that Amber Conville was perching on her chair, rather than sitting in it. I thought to myself, “What posture would a woman assume if she was subconsciously expecting at any moment to have to use her feet to shove herself back from the desk, jump up, and run away? Probably she would not curl them up under her and sit on them.” Of course, being Amber in general and a CITC veteran in particular, she’s not a very random sample, but it was still gratifying to see. Later I saw Chelsey Baker playing idly with her long hair, as though it were an old habit, as she paired with her partner. While I don’t know her at all, it at least seemed good that she was able to relax enough to fall into an old habit.

During our next retrospective, we discovered that some folks had taken the “be faithful to the direction of your predecessors” rule a bit too far, in that bad code–and even incorrect or dead code–had been allowed to stand and even built on, in order to avoid damaging the Vision of the Predecessors.

One of the other retrospective questions was, “For the outside folks, how do you find what’s happening here today to be different from what you experience pairing with people on the job?” The answers were a little surprising. I expected to hear, “No different, really, it’s pretty much just the same.” But no: the answers we got all contrasted CITC positively with work. I believe it was Mike Cornell who said that he found that the engagement was much higher: that nobody seemed to have a pair partner who was constantly running off to the break room or the bathroom or finding other excuses to get away. Somebody else said that the relationship between pair partners tended to be nicer and more considerate in prison than out.

After the retrospective was another cycle; toward the end of this cycle we definitely began to smell lunch, which worked out to be delivery pizza (fifteen of them, I believe) and soda–Mountain Dew, Coke, and Diet Coke in 2L bottles. As soon as the cycle ended, I led an expedition to the bathroom (you’re not allowed to go to the bathroom individually, and even a group has to be escorted by somebody with escort authority), so when we got back almost everybody already had their food.

There was a lot of standing around and talking and not much sitting in the circle at first, but we gravitated eventually toward the circle, and I noticed that while Margaret and Chelsey (who were both CITC rookies this time) were still sitting right next to each other, Amber had broken off and was sitting on the other side of the circle with a prisoner on each side of her. Outside of the women, we were beginning to get some fairly significant mixing. Joel Helbling commented to me that instead of sitting with their group (insiders or outsiders) it seemed to him that people were mostly sitting with their pair partners from the previous cycle.

I noticed that the circle seemed less crowded than before, so I did a quick count and came up with some folks missing. After a couple of questions, I found out that the Martins had been spirited away across the hall to be interviewed in front of the green screen.

Once they came back, we launched into our next cycle, and managed to get two in after lunch before the Martins had to leave at 3:00 to catch their plane. They each got a T-shirt with a CITC9 logo on it, and they were shown a music video that Mark Roberts had made to a Katy Perry song.

For our next-to-last cycle, George Walters did something very nice for me and offered to facilitate, so that I could actually pair with somebody and get some coding done. That was a lot of fun, although most of what we did was refactoring of tests to make them clearer–for example, if somebody wanted to prove that a Strength modifier of +1 was enough to make them able to hit even with an attack roll one less than an opponent’s armor class, by writing code like this:

For our last cycle, traditionally we go back to our original Cycle 1 pair partners, and our original Cycle 1 machine, and see what CITC has made of the code we wrote at the beginning. For CITC9, though, Uncle Bob and Micah were gone, so Nick Cochran and George Gonzalez had no pair partners to return to. Instead, I tripled with them on a handy machine and we at least had some fun for the final forty minutes.

During our final retrospective, we talked about–among other things–how things could be made better next time for CITC10. The major thing we hit on was that when everybody constantly moved from machine to machine, pairs spent too much of a cycle figuring out what their predecessors had been doing. So next time, we’ll have–say–the insiders stay at a machine between Cycle 1 and Cycle 2, and then have the outsiders stay at a machine between Cycle 2 and Cycle 3, and then the insiders between 3 and 4, and so on. That way we’ll still be able to switch pair partners and work on other people’s code, but there will be some maintained context to speed up the acquisition of situational awareness.

Another thing that came up was a question for insiders: “How has your experience here at CITC today been different from your normal experiences pairing with other prisoners?” The answer was interesting: it seemed fairly uncontroversial among the prisoners that their pairing sessions with us were altogether nicer and more pleasant than the sessions where they pair with each other.

Part of this is due to the fact that software development in the prison is understood as something important that you sacrifice for, that you spend lots of time on, that you work very hard for, that you don’t get to do unless you’re dead serious and passionate about it, and that it’s a program you’re in to learn as much as you can as fast as you can before you’re released, rather than to have a good time and be all sunshine and butterflies.

However, Chelsey Baker and Amber Conville (who are coworkers) talked about one of their team rules, which is “Don’t Be A Jerk” and is posted on a big banner in their team room. According to them, pair partners who are less than nice are immediately called on it and shamed, and the practice produces a much more pleasant working environment.

It’ll be interesting to see whether that practice gets adopted in the prison. I can’t see it being introduced as a touchy-feely “be excellent to each other” measure, but I can imagine a philosophy like this: “Look, this is supposed to be difficult. It’s prison. If you don’t like it, that’s not my problem. But just because you’re having a bad day doesn’t mean that you get to take it out on the guy next to you, and if we catch you doing that you won’t last long.” There’s already a perceptible “The Few, the Proud, the @gile fact || <E>” esprit de corps about the program; a “we don’t just pair, we pair well” slogan would go right along with the current “we don’t just write code, we write good code” spirit. We’ll see.

After we spent some time saying our goodbyes, we went out in the hall for a group photo. I don’t know whether the censors will allow that group photo out of the prison. They did for CITC1 (for which we had not yet come up with the name “Coding in the Clink”); if they do for CITC9 I’ll update this post and add it.

Signing out and leaving was fairly uneventful, except that we discovered a few people who had not signed in in the A building. The reason that’s important, of course, is that if there should be some sort of disturbance or riot or hostage situation while you’re in the prison, you definitely want the administration to know that you went in and that you haven’t come out yet. But once you are out, the fact that you didn’t sign in has approximately the same significance as the fact that you didn’t wear your seat belt does as you pull safely into your destination.

Since we had spent more time in the prison than I expected us to, and more time than we ever had before during a CITC event, I figured the attendance at the traditional Bob Evans retrospective would be light. But as it happened, the Michigan contingent (Amber, Jeff, Chelsey, and Margaret) and the Indiana contingent (Joel) both came and participated, and the only ones that had more pressing business turned out to be the Martins and Tim Butterworth.

It was a good day. I’m glad we did it. Hopefully we can do it again in a few months, and the guys inside will be even better pair partners.

Well, CITC9 has in a number of ways been unlike any CITC that preceded it.

First, I was approached by Robert C. “Uncle Bob” Martin, of Agile Manifesto and Clean Code fame, about when our next Coding in the Clink and PrizCon events would be. His schedule didn’t work with PrizCon 2014, but it did work out for CITC9. He said he wanted to come see what we were doing. (This didn’t come out of nowhere: the guys inside had already invited him to PrizCon 2013, although as it turned out he couldn’t make it then.)

Less than a month later, it was pretty definitely established that he and his son Micah were going to fly from Chicago IL to Marion OH in Micah’s Piper Archer (low-wing single-engine four-place light plane).

This presented a problem, of course. How were we to conduct a serious CITC if it became known that Uncle Bob Martin was going to be there? The place would be swamped–not with people hoping to pair with prisoners, but with people hoping to pair with the Martins. That’s not the way CITC is set up. Outsiders pair with insiders; that’s just the way it is.

So I decided to keep Uncle Bob a secret until we had all the tickets “sold” on the EventBrite site.

This time, we had fifteen prisoners on the roster for CITC, so we needed fifteen outside developers to go in. I figured I’d add two extra tickets, because we’ve never had too many folks from outside before and I figured probably at least two would cancel at the last minute. So: seventeen tickets for CITC9. Or rather, fifteen tickets available on the site, with two secret tickets already “sold” to the Martins.

I was a little surprised at how fast we sold out anyway. There have been times when we’ve been able to scare up so few outside developers that we’ve had to have all triples instead of pairs: two insiders and one outsider.

But these were the folks who signed up to go. (They may blog this event, the way I’m doing now. If they do, and I find out about it, I’ll make their names here links to their blog posts.)

The names in blue are CITC veterans who have been to a number of events. The name in red is a second-timer who had been to one CITC before. And the names in orange are brand-new: as far as I knew, these people had never been deeper inside any prison than the visiting room before, and more than likely not even that far. Names with stars are people I had never heard of before and whom I didn’t solicit, whose names just suddenly showed up on tickets.

As it turned out, three of those starred names–Chelsea, Jeff, and Margaret–were people who were invited by Amber to ride with her down from Michigan. Tim was invited by Eric Wilson, a CITC veteran who couldn’t make it himself but thought it was worth recommending to one of his coworkers. So…I invited Amber and Eric, and they invited Chelsea, Tim, Jeff, and Margaret. That makes me feel like some strange kind of a grandfather, or something. (I’m the regular kind of a grandfather as well, so I know how to recognize the feeling.)

All was well as the day slowly approached, but all began to get a little more dramatic as the arrival became more imminent.

First, the federales decided to apply a federal law to the state of Ohio, which might have the consequence of making it illegal for one of the outside developers, who had himself in the past been a guest of the Governor (so to speak), to go back into prison with us. Nobody knew for sure how the law was to be interpreted, but outlawing him was certainly one possible interpretation.

Second, Wes, who didn’t have a car, needed a ride to the prison and back, and lived in a part of town that was not geometrically convenient to anyone else who was coming.

Third, Alyssa got the flu and began to wonder whether she’d make it.

Fourth, Guy brought an acute ear infection back from CodeMash.

Fifth, the weather for the weekend of CITC9 began to look uncooperative. Micah is a VFR pilot, which means that it’s illegal (and unwise and unsafe) for him to fly in clouds, and it was looking like there was a snowstorm shaping up to hit right around the night before (Friday) or the morning of. The Martins might have to fly commercial instead of private.

And whether they came commercial or private, they’d need transportation, preferably from somebody coming to CITC anyway. But Port Columbus is some forty miles south of Marion Municipal Airport, so whoever picked them up would need to be flexible.

But things began to work out.

First, the federal law was determined not to apply in this case, so there wasn’t a problem.

Second, Guy almost immediately volunteered to make the geometry work anyway and go get Wes on CITC morning.

Third, Alyssa decided she was getting over the flu and would be able to make an appearance.

Fourth…well, that problem didn’t work out. The ear infection kept raging. What if it took Guy out of the game? Who would go get Wes then?

Fifth, Jesse agreed to sync up with the Martins and make sure they were transported wherever they needed to be transported.

The problems were fewer, but they hadn’t completely disappeared. Time kept grinding on.

Third, Alyssa decided at the last moment that she wasn’t feeling well enough and didn’t want to infect anybody in a place where as many folks live as closely together as they do in a prison.

Fourth, Ovi agreed to pick Wes up for Guy if Guy’s ear infection kept him out.

Fifth, the Martins decided to take a commercial flight in on Friday night (the weather was horrible, with lots of wind and snow and overcast), and rent a car and drive to Marion to find a hotel rather than make Jesse pick them up, drive them all the way north to Marion, and drive back home again in the blowing snow.

The only fly in this ointment was that the Martins would need to leave the Clink early to be able to catch their return flight back to Chicago.

As things finally worked out, though, Guy defeated the ear infection long enough to bring Wes and come to CITC, Alyssa (hopefully) got enough rest to defeat her flu, and we managed to get the Martins out when they needed to leave, having them miss only one cycle of coding.

Saturday morning was pretty and still, and clear under a high (maybe 8000ft) overcast, and Micah was a little disappointed that he hadn’t waited out the storm in Chicago and flown himself and his father in early Saturday morning, but as it turned out we were beset by another storm as soon as we left the Clink, so his decision was for the best.

I’m fairly sure the leadup to this CITC has been the most dramatic ever, but hopefully we’ve learned some things that will be useful the next time a charter signatory of the Agile Manifesto decides to come.

Those of you who know Mark from Coding in the Clink–the small, wiry guy who is amazingly quick in the head and who creates great computer animations–will be interested in this: after serving 20 years of a 15-to-life sentence, he’s coming up for parole for the second time in December 2013.

That means that the Ohio Parole Board, as it makes its decision on whether to parole him or whether to give him another five years in prison, will be looking for letters from people who know him better than they do.

Nobody from Coding in the Clink knows Mark well enough to be able to tell the Parole Board whether he’s a good person or not, whether he’s truly remorseful for his crime, whether he should be released, or anything like that. However, most of you know him well enough to say that if he’s evaluated to be a good person, if he’s evaluated to have been properly rehabilitated, if he turns out to be a good risk for release, then he has the skills to be employable on the outside as a software developer. That does-he-have-marketable-skills question is an important one to the folks on the Parole Board, and if you’re of a mind to answer it in the affirmative, you could be a big help to Mark with comparatively little effort.

If you’re like me, though, you’ve never written a letter to the Parole Board and the concept is a little intimidating. What should the letter look like, to whom should it be sent, and what are the consequences?

Unfortunately, you can’t wait until December to send the letter. There are various preparations that have to be made before the hearing, so if you decide to do this, the letter needs to be in the hands of the Parole Board before mid-November if it’s to have any effect on this upcoming hearing.

Of course, some folks who’ve never been part of Coding in the Clink really don’t understand what we do or why we do it, and I can imagine that some of those people might be of a mind to actively sabotage Mark’s quest for parole if they knew enough about him to write a letter of their own. Therefore, I’ll withhold specifics like his last name, his DOC number, and the exact address where the letter should be sent from this blog post. If you’re of a mind to write a letter for him, send me email at dnwiebe@gmail_com (replace the underscore with a dot), and if I remember you from Coding in the Clink I’ll send you back the specifics. (If you’ve paired with him at CITC and you have something bad to say about him to the Parole Board, that’s fine with me, as long as you actually have some experience with him. I’m just trying to filter out the folks who just generally believe without experience that all prisoners are scum and should rot in a cage.)

I was talking to the JavaGuys last night, and they’re planning to split PrizCon 2013 into two tracks: one heavily software-oriented track, and one oriented toward what they call digital arts–that is, computers as applied to things like music, video, 2D and 3D modeling and animation, and so on.

Right now, it looks like the presenters on the digital-arts side of things will be mostly prisoners, and the presenters on the software side of things will be mostly outsiders.

We’ve got three ideas hammered out pretty well on the software side.

One of the things we definitely want to put together is a panel discussion with three or more people about How I Came To Agile. I get the idea that this is intended to be an interactive version of what in church they call “testimonies.” What were you like before? How did Agile change that? What are you like now?

Another thing we want to concentrate on this time is Perlis languages–specifically, Perlis languages for Java programmers.

Alan Perlis was one of the inventors of ALGOL and the originator of a number of pithy quotes about programming, the most relevant of which, in this context, is: “A language that doesn’t affect the way you think about programming, is not worth knowing.” A Perlis language, for you, is one that makes you look at software development in a different way. So…for a Java programmer, the DEC PDP-8 instruction set would be a Perlis language; J would be a Perlis language; C could be, depending on how it was presented; but C# would not be.

So we’re looking for a series of presentations about far-from-Java programming languages that are intended not to teach people how to write in them, but to demonstrate new ways of thinking about software. So far we’ve got Nilanjan Raychaudhuri presenting Scala, and it looks like I might get stuck with Clojure if we can’t find anybody better. Bob Allen has pointed up a PDP-8 emulator that we could use if folks really really want to see a presentation on that instruction set.

I don’t know how long these talks will be, but a good starting estimate would be “short.”

The third thing they want to know about is mobile development, with primary emphasis on Android and secondary emphasis on iOS. My guess is that the mobile talks that were really hot two years ago, appropriately updated, would be similarly hot now at PrizCon. Mobile devices are fascinating to the guys inside because in general they don’t get to come anywhere near them. Things with cell radios are in general unwelcome in prison; it’ll be interesting to see if and how we can get some tablets or cell phones in there for the conference presentations.

Speaking of getting things into the prison, my thoughts at the moment are that we probably won’t get permission to take in a dozen or so laptops. Instead, I’m going to see if I can get permission to take in USB flash drives. As a presenter, you’d put all the stuff you need on a thumb drive–including Eclipse, Grails, Sublime Text, whatever–and plug it into the communal laptop when it was time for you to present. I’m pretty sure we can make Windows 7 and Ubuntu 12 available; MacOS might be an issue if we can’t put it in a VirtualBox VM.

Again, if you’d like to present, get in touch with me at @dnwiebe on Twitter or dn_wiebe@gmail.com (without the underscore) and let’s talk. If you don’t, I’ll probably get in touch with you.

In 2010, a bunch of us both inside and outside got together and put on a technical conference inside the prison at Marion Correctional Institution in Marion, OH. You can read about it here.

It was a positive experience on the whole, but things did not go as planned, either on the inside or on the outside. Many of our eagerly-anticipated outside speakers turned out not to be able to make it, and miscommunications in the prison led to a much smaller turnout than expected.

So Mark Roberts, perhaps the hardest-working prisoner I have ever met, has decided that we’re going to do it again and again until we get it right, or something like that. Here’s what he had to say to me:

We are actively moving forward with planning for the Tech Conference. SuAnne [supervisor –Dan] is contacting The Columbus College of Art and Design to see if there is any interest. We have tentatively scheduled January 19th 2013 [this has changed, see below –Dan] in the chapel. You will have to tell me to “Slow Your Roll,” in your best gangsta voice, if you want me to slow this down. Strike while the iron is hot, but not in a rush.

So at the moment I guess we’re looking for outside presenters who would be willing to come in and give presentations on something tech. The word is that we’re going to be concentrating harder on IT this year than we did in 2010, but a presentation on, say, how digital synthesizers or hard disks work would be welcome, as would something about the various obstacles confronting the union of tech employers and tech employees who are ex-felons and how to surmount them, or why computer programming will be obsolete in ten years.

It looks like I’ll be doing a presentation on test-driven development, and I’m being pushed pretty hard to do one on Arduino as well, although I’m not sure how easy it’s going to be to get a bunch of discrete electrical components into the prison.

The handy thing about presenting at a conference in prison is that you have a captive audience, and chances are good that anything you do is better than anything they’ve ever seen before, so the acceptance bar is pretty low. Of course, you won’t get paid in money; but you’ll get some practice making presentations, which is never a bad thing, you’ll get some renown in the community, you’ll get to make completely outrageous statements with a straight face (“Joel Helbling? Oh, yes, I know him well–I met him in prison!”) and back them up, and you may very well end up having significantly more fun than you’d expect.

Remember Sandra Bullock in The Net? Remember Hugh Jackman in Swordfish? Remember how true-to-life and faithful to the real-world experience of the software developer those movies were? Well, prison movies are just about as accurate as they were. Talk to veterans of Coding in the Clink for corroboration.

So if this sounds like something you’d like to take a swing at, contact me and let me know, and we’ll start putting a definite shape on this thing. Once it has a definite shape, we’ll be able to be more specific about what we’re going to do.

The best way to get hold of me is as @dnwiebe on Twitter. You can also try dn_wiebe@gmail.com without the underscore.

I hope to hear from you!

Update 10/17/2012: We decided last night that January 26th will be the day–two weeks after CodeMash.

A friend of mine named Jesse Cox was one of the outside developers on Coding in the Clink VI. I pestered him to blog about his experience. He was willing, but something went haywire with his WordPress account and he was unable to post his experience. So he sent it to me, and I’m publishing it here verbatim. —Dan Wiebe

Wow, what an adventure! One I will not readily forget . I just happen to get the last ticket and I am glad I did.

To start with I have to explain that I have a different perspective from the other developers that had come to this very special event. How so you might ask. Well it doesn’t seem that long ago that I was on the other side of the fence looking out. Yes, years back I was an inmate at that very same prison. While the other developers were wondering what it was going to be like working with inmates, I was stressing out what it was going to be like working with other developers. I would be working with names like “Dan Wiebe” and “DJ Daugherty”, both well-respected in their fields. Even though I was just meeting some names that I had not heard of before, I’m sure that they are well-practiced as developers. I am an amateur developer hobnobbing with ones who do it all day long. I had no clue how I would add up. On top of that, I’ve never been to a retreat before! Even though I gleamed that this was only sorta like a retreat. So now let’s start the adventure.

I met Dan Wiebe in the visiting room. He introduced me to DJ Daugherty. Nice guy (trying for brownie points). The first thing I noticed that they were flesh and bone like me. Go figure! So feeling a little more at ease, I got to meet the rest of the group and then we headed into the prison…our destination, Life Line. This is where the computers are kept for the prison population to learn specific programs (i.e. Microsoft Office, Photoshop). It is also where Dan instructs TTD using java with the inmates.

To start the day out, Dan had us all rate where we felt our ability was using java. Being well versed in C++ and only able in java, I rated myself around a 3.5 or 4. I figured it was better to rate under than over and end up with egg on my face. After hearing others also give themselves a lower rating, I felt pretty good. But as I was basking in the warm rays of this pseudo-knowledge, that I was as good as the others if not better, Dan totally burst my bubble by saying he didn’t know why some where lying about their rating. It was at that point I realized Dan was not the only one in the room that was quite adept at java. Damn!

The project was an African game called Mancala. We sat there and learned how it was played and what the rules were. Dan and an inmate even played one game and Dan won, but I just know he cheated somehow (I got my eyes on you Dan!). We agreed on 45 minutes for each iterate and 15 minutes retrospect afterwards.

In the first iterate, I was paired with Mark Roberts. I have known him since the nineties and have even program with him before (i.e. video game). So it was like old times sitting with him and working on the Mancala. To start with we created a “Side” class. Then we created a “Board” class that would create two instances of Side objects. We figured that anything that happened to one side would be identical to what would happen on the other. We would allow the Board object keep track of what side was up. This is about as far as we got before time ran out.

The second iterate I paired up with Louis Pierce, who I also knew from my past stay at hotel MCI. so now I’m pairing with someone new and sitting down at a different station where someone else started writing code. Here is where I screwed up. I was so stuck on my own vision as to how the problem should be addressed that I refused to submit to the code already written. As an example, in the first iteration we used hash maps to keep track of the pits (7 per side). The code I was looking at was using linked list…can you image that, what were they thinking! (yes I know linked list might have been a more eloquent way of handling it, but I was not going to succumbto someone Else’s evil code). So like a jerk I removed the linked list, and had to figure out a way to make the code pass the tests without them. So needless to say we didn’t progress the code before time ran out (if it was needless to say what did I say it anyhow? Huh).

During the retrospect, I guess I wasn’t the only one who tried to bend the code base they found to their own will. It didn’t make me feel any better, but misery likes company. Dan requested that we not do that and instead try to figure out the vision that the previously developer had and try to follow suit.

So now I paired up with Gene Lynn (I remembered him from another prison, where he was this math wizard. Every time someone would say “Go figure” He would). Taking the time out to study the code base and trying to follow suit did go better. We were actually able to progress the problem and reach some objectives. We even left the code testing green!

Lunch! It was cold cuts and some chips. They had coffee for us all day long, and lord knows I love my coffee!

The fourth iterate I was paired with was Darrin Pordash. He had only been at learning java for 8 months, but I think he did well. Again spent time to see the vision of the previously coders, and follow it. What I liked about Darrin was that he listened very intently when I would explain why I did what I did and how it worked.

I own someone an apology, because I don’t remember who I paired up with during the fifth iterate (but I’m sure he was great).

The sixth iterate we paired up with the person we originally paired with in the first iterate. We got to sit at the original station and see what our started code had turned out to be. Well it definitely altered our vision, but yet it still had some enduring qualities. What I had noticed though was that I had wrote a IfMoveIsACapture method, and someone commented it out. I don’t know why someone would do that!? It passed all tests and was marvelously done . Why, why why!? What kind of sick person would do that to me!? I’ve had a lot of sleepless nights because of it. Actually, after what I’ve done to some of the other developer’s code, I guess this was my comeuppance.

So now in summary, it was a great day. It felt good to spend a day in a world of developers, and yes I mean both inmates and outsiders. I remember when I was doing time it was next to impossible to find someone who even know what a IDE was yet alone be able to talk to someone about a coding problem. Mark Roberts had some kind of understanding, which is why we hit it off when I was inside. Now I see a group of guys that are learning java and a few that could give any outsiders a run for their money (Nice instructing Dan).

We went to Bob Evans afterwards, and I remember DJ saying “After awhile, I simply forgot I was in prison.” My remark, given my different perspective, was to this “I’m sure the guys inside forgot for a while that they were in prison also.”

In A Nutshell

This is a blog about a class at Marion Correctional Institution in Marion, OH where medium-security prisoners learn the Java programming language along with Agile methodologies and practices with an eye to becoming professional software developers when they're released from prison.