Chapter One: How This Book Begins

    Date: Fri, 31 Oct 2008
    Subject: Anyone (else) doing NaNoWriMo?
    ...

Why did I write that email? And why on earth did I post it to my mailing list?

It seemed to make sense at the time. All I had to do was write a hundred thousand word novel in 30 days.

The math is easy. You set an aggressive target. Five thousand words a day for twenty days, with a ten day buffer. How long can it take to write five thousand words?

I cut and paste this into Google Docs. Tools / Word Count. 86 Words. Now 91. 93. I guess it counts numbers as words. Okay.

93/5000 = 0.0186 . Almost 2% of the way there.

Hey, nobody said this novel had to be any good.

Keep writing.

One of the books that most inspired me when I was younger was Wild Mind by Natalie Goldberg. I forget when I first read it, but I remember doing her timed writing exercises with the kids at SummerBridge.

The point was not to stop. Just keep writing and keep your mind going and get the words out. You can edit later.

So yeah, this is going to be bad.

My first thought was that I'd write this about my old pals Gabe and Alex, stars of my last ridiculous "novel", greed, sex, and murder. That one was about two guys who wanted to evolve an AI trading system with genetic algorithms. I wrote it in 24 hours for the blogathon back in 2003, and haven't touched it since.

It's really two books in one: the trading story, and a story about Alex's struggle to find motivation. Of course, it's really my own struggle. The struggle I'm always dealing with. The thing I call the flake effect.

Part of it is the ADD. I know that. Well, no, I don't really know that. Getting diagnosed with ADD was a matter of answering yes to enough questions on a list of symptoms. I think 6 "yeses" out of ten gets you the prize. I already wrote about that in my blog though, in The Predominantly Inattentive Type.

I always remember my post titles, but half the time I go back and they don't say what I think they said.

I take a drug for it now, and it helps a lot. (I consider using the name and then my mind wanders to the SEO implications of mentioning drug names given how fond spammers are of selling anything in a pill. As if I really want people to find this page anyway.)

I haven't written anything resembling fiction in ages. Part of it is I'm busy. Part of it is the flake effect. Part of it is that sometimes it gets a little too dark and maybe I don't want to open that can of worms. With the 24 hour one, I really stepped into the depression Alex was dealing with... Way worse than what I deal with in my own life now.

So I'm hesitant to do this again. Scared maybe. But not really scared of the depression so much. More like... I'm scared I won't be able to pull it off. I've given up on nanowrimo a couple times over the years. I don't think I've ever even written one line.

This year, I don't even have a plot. I have a conflict. And I have some characters. But I don't know how the story ends. I don't even know if I'm still capable of writing a story. I don't even know if this is a story, or just freewriting.

But maybe once I start, something will happen. That's how it used to work. I used to write all the time. I'd sit down, and I'd write "chapter one" and I'd just start writing. Yeah, I'd hardly ever finish anything. Most of the time I didn't even get more than a few paragraphs in.

But once upon a time, the summer right after I finished high school, I wrote a short novel. I don't know the word count but it was about 70 pages. Maybe that's 140 pages if it were printed. I don't know. I called it a novella at the time. It's online at ... Wow. It takes a few minutes to track it down. http://sabren.net/stories/mdest/. I don't think it's even in google anymore. An orphaned link.

It's not very good and even now, twelve years later, it's never really been edited. (Every time I tried to edit, I wound up writing something completely different.) Halfway through, I was writing a scene and realized I'd completely wandered away from the outline and so I fixed it with a good old Deus Ex Machina: god himself (that is: me, the author) shows up and puts everyone back where they're supposed to be. Then I wind up making another appearance at the end. It's pretty bad.

But: it's a complete work of fiction. I want to say it's the longest thing I've ever written, but somewhere around here I have another novel that takes place in a fantasy world (not sure if there's any dragons, but there's castles and at least one fairy). It might actually be longer. Mostly because I just kept adding new subplots and introducing new characters. Another work I never finished.

Still... I at least finished the draft of Manifest Destiny. And I'm pretty sure it only took a couple weeks. I didn't have vyvanse or a boss, but I also didn't have to worry about rent. I still lived at home with my parents.

Even so, I remember making the decision to stop playing Starflight II a highly addictive space exploration game for the PC. I could have happily spent the whole summer playing that game - and I almost did. But somehow, I realized it was going to keep me from writing my book, and I managed to pull myself away.

987 words. Almost 20% of the way to my goal. How long did that take? I don't know. It's 6:56 now though.

This is meant to be a teaching book. That was always the point. Something along the lines of The Goal or maybe even Zen and the Art of Motorcycle Maintenance.

If I knew the answer, I'd plan it all out. I'd start with poor old Alex, struggling to manage his time and attention and I'd design a series of problems for him to solve and I'd find him a teacher. Maybe Gabe runs that little pool hall where they always hung out. But maybe it's his office. He's an accountant you know. That was the whole point. Alex was the programmer and Gabe was the financial guy. Maybe Gabe's a throughput accounting guru and teaches his clients how to maximize their business, but he can afford to be a little crazy and so the Eight Ball is his office. He teaches his lessons over the pool table. Or the chess table. Or the poker table.

Why not? Games are a way of seeing yourself in a different light. The past couple days I've been reading The Art of Learning by Josh Waitzkin. He's a world champion chess player. He teaches some of the lessons in the Chessmaster games and has written numerous books on chess. They even made a movie about him (Searching for Bobby Fischer , based on a book his father wrote. I haven't had the chance to watch it yet.) Anyway, Waitzkin left the chess world behind and became a champion martial artist in Tai Chi Chuan.

It's a really great book. I expected it to be a sort of a self help book. Follow these steps, and you'll get better at learning. There's a hint of that, but it's told through his personal story of development. At first, I was put off by it. Don't get me wrong. The stories about his years as a young chess prodigy are interesting. But they're not exactly instructive. But I kept reading and about halfway through the book I realized I was learning all kinds of stuff from this guy. Not because he was telling me anything but because he was showing me. It's like stepping inside his head and going through his learning process and after being in his world for a while, I start to see my own a little differently.

In many ways, The Art of Learning reminds me of Sirlin's Playing to Win, an astounding online book about competitive gaming. Sirlin's book gives a fascinating look into the world of competitive Street Fighter II tournaments. Yes, that's Street Fighter II, the old Super Nintendo game. Sirlin talks about the game in a level of detail that I hardly knew was possible. When I play a fighting game like that, I press buttons and hope to win. These guys are all about mastery. Getting into your head. Lining their fighters up to specific pixels to exploit specific patterns. Slowing time down to the point where they can strategize and analyze their opponents play. All this in a video game that takes maybe thirty seconds to play.

Waitzkin's writing about real Push Hand (the martial art side of Tai Chi Chuan) is strikingly similar. He talks about slowing down time and he goes into great detail on his thought processes in the middle of a match. At one point he spends a whole page breaking down the steps in a judo throw that might take half a second to execute.

Having studied NLP, I know what time distortion is. And I've even experienced it. And I remember how, back in Mrs. Barron's Algebra II class, how I'd finish early on a test and have to sit in silence as the minutes ticked by. Even with a book, it seemed to just drag on and on, whereas I've been known to lose hours or even days playing while writing or playing a new game. But that's exactly the opposite of what these guys are talking about. For me, time flies by when I'm engaged, and for them, time slows down.

Although, I remember one time, long ago, I was working late at night at my old job. I was building some kind of web app in ASP. The project was late and so I was working late, and my boss even stuck around to babysit. At one point he was standing behind me, and we were tweaking the layout or something, and so he was asking for changes and I'd make them in real time. He told me later that he couldn't even see what I was doing to make the changes because I moved so quickly. I suppose from his point of view, one second he'd be looking at the browser, and then the screen would switch to my IDE and the text would fly around and then the browser was back showing the changed page. I don't even think I'd discovered emacs back then.

As a programmer, the ability to move quickly between a running application and the source code is critical. Maybe that's why I never managed to pick up C++. Turbo pascal spoiled me with its near-instantaneous compilations. All you had to do was hit one button (was it F5?) and your program was running. These days, in python, things are quick, but not necessarily that quick. Python works at a whole different level of abstraction, but even so, there's often way too many steps between a thought and its realization. Having unit tests certainly helps, though.

So what does all this have to do with the flake effect, or writing a novel, or anything? Maybe nothing. I don't know yet. But maybe that sense of flow and instant feedback is a big part of what I'm missing when I try to get things done. Once, I Built a Timesheet in an hour or two. I was using a horrible, clunky technology (the old pre-.NET Active Server Pages) and yet it was a tool I'd mastered. Now, years later, trying to put together a simple crud app like that takes so much longer. Maybe it's because I don't program every day, and the tools I've built up over the years, while much more powerful than raw SQL mixed in with HTML, take much more time and energy to use.

But why is it I used to be able to sit down and just write for hours - and I mean fiction, not this stream of consciousness I have here, but actual scenes and dialogs - and now I don't even know if there's a story in me?

Maybe I've become too serious about everything. More than five years ago, when I started studying extreme programming, I wrote an entry on the original wiki: RelaxImagineAndCode ... For a while there, I seemed to have captured the old magic again. I remember how excited I was about XP. I gave a Lunch n' Learn at ASI about it. I showed up with stacks of books like Refactoring and Design Patterns and two printouts of a chunk of code from Zikeshop : I'm pretty sure it was from before and after Refactoring the Product Page. I talked a mile a minute about refactoring and automated testing. These were smart guys but we didn't have a culture of being on the cutting edge. Kevin once told me, when I asked about working from home or adopting the four day workweek of the client, that it might be a good idea but, "We are not trailblazers." Even so, it was fun to show off those cool things I'd discovered in my months away, trying to start my little startup. I think they went for it.

I like being up on stage. I like writing and dazzling with my words, even when I don't know where I'm going with them. Which is funny, if you know me in person, because I barely talk. My mom tells me I used to be so shy that I'd hide from the pizza guy. And while I loved writing stories in school, I hated reading them to the class. 
I even know when that started. Back in kindergarten, I had no problem with it. I was a nerd even back then, and didn't really know what to do with all those other kids. I liked them well enough, but somehow I was different. But one day in kindergarten, we were studying the solar system and our teacher gave us homework to write a story about visiting another planet. All the other kids wrote a paragraph or two. I wrote five pages. I don't have any idea what happened to that story, and I have no idea what happened in it, though I seem to recall that I was accompanied in my interplanetary travels by a pet wolf. Actually, I don't even remember whether I read it to the class or the teacher read it for me. But I remember the other kids talking about it. I can still hear the echo of some sentence fragment: Except Michal's. No idea who said it. No idea whether it was a girl or a boy or what, specifically they said about those other stories. But I remember those two words and I remember the tone of voice they used. All the stories were boring and pointless -- except Michal's. For once in my short life I'd impressed the other kids, and for years and years afterwards, part of me knew I wanted to be a writer.
I have only a couple other memories from that school. Flashes of big concrete pipes in the playground. Tug of wars on field day -- another thing I was good at - I might have been a tiny little toothpick back then, but I could sure dig in and lean. I was always the kid at the very back end of the rope. Watching the Muppets.  Studying cursive (a pointless and archaic invention). A grove of pecan trees where all the big kids - the fifth graders - hung out during recess. And the fights: every day at recess my few friends and I went to war with this other group of kids. Actually, I only remember one, and I'm pretty sure I thought he was the bully at the time, but I was pretty vicious too. I was the one who figured out you could find an ant hill, poke it with a stick, and then chase after the other kid with it before the ants climbed all the way up to your hands. I only got in trouble for fighting once, even though this went on pretty much every day. I don't think I got in serious trouble, but the "normal" kids were astounded that quiet little Michal would ever get in a fight.
But I digress. The point of this trip down memory lane was to talk about how I developed the crippling fear of public speaking. And it was such a silly thing. I was supposed to be the smart kid, right? I was the one they pulled out once a week to go to the special class for the smart kids. AIM it was called. We even got to work with computers. And yet one day, in the normal class, we got assigned a book report, and we had to read our reports in front of the class. I picked a Dr Seuss book. I'm about 90% positive it was The Cat in the Hat. Well, that's an awesome little book and I liked it, and it didn't even occur to me that it was several grades below my "reading level"... Until the other kids started reading their book reports and I realized I'd picked a little kid's book. I don't even remember what my teacher looked like, but I remember her telling me to read louder, because she could barely hear me. I can't even picture the other kids in the class. I don't remember any laughing. Heck, they probably weren't even paying attention. But I can remember standing there and looking down at the paper and the sunshine coming in through the window and the carpet and the green chalkboard and that disembodied lady voice telling me to talk louder, and despite the cheerful surroundings, even now, the impression I get from that image is one of overwhelming shame.
That ridiculous sense of shame stuck with me for years, whenever I was called upon to share my work. Even in high school, I'd take zeros rather than read my own writing to the class, or even lie and say I forgot to do the work. Sometimes other kids or the teachers would read my work for me, and I'd put my head down on my desk and try to hide. It was not until my senior year that I finally got over that fear. I forced myself to take both a speech/debate class and the introductory acting class, and push through my fears. I still feel a little nervous getting up in front of a room, but it's not a crippling fear. I'll even get up and sing at Karaoke.
Even so, I have to wonder about my teachers. Surely, I'd read book reports in that class before. Why didn't she notice I was suddenly petrified? Why is it that in all the years after that, the countless times I'd flat out refuse to read something I wrote to the class, none of my teachers would step in and help?
Then again, maybe they just didn't know how.
Most people are not aware (or don't believe) that it's possible to dramatically change a fear or other crippling mental pattern without years of hard work. It's not a mainstream kind of thought. It's not something we teach in school. It's not even necessarily taught in university psychology classes. Practical, logical, systematic technologies for personal change get mixed up with nonsense and wind up in the bookstores filed under new age or 'inspirational' or "self help" - although a good portion of this body of knowledge also winds up in the business aisle usually labeled "management" or "sales". Even then, these books are rare finds in shelves of books filled with platitudes, fuzzy thinking, dubious opinions, and just plain bad advice.
I don't claim to be the world's clearest thinker. Far from it. Until recently, despite my career as a professional programmer (which requires you to organize and explain your ideas so precisely that even a computer can understand them [which by the way is very different from organizing your ideas so that only a computer can understand]) I constantly found myself struggling to deal with logic.
One book I read showed me a way. I picked up Eli Goldratt's It's Not Luck after his first book (The Goal) blew me away. Who knew you could write a best-selling novel that actually taught valuable business lessons? I'm not talking about a few generic pieces of good advice shoved into a fable. There's nothing wrong with books like that. Ken Blanchard's The One Minute Manager is a quick, fun read and I got something out of it, but Blanchard's works are simple stories with simple lessons along the lines of Aesop's fables. Goldratt, on the other hand, manages to teach a highly analytical, step by step thinking process - his Theory of Constraints (ToC) - through his novels while telling an entertaining story. His non-fiction books tend to read like college textbooks. I almost want to say boring college textbooks, but that's not true. The Haystack Syndrome is actually a fascinating book and well worth reading, but it takes a lot of thinking and hard work to digest, whereas his business novels zip along. There's no life or death drama, but down to earth problems like deadlines and cash crunches and the struggle to balance life and work. His characters approach life with logic and analytical thought, and as you watch the characters think and talk through their problems, you almost can't help but want to emulate them in your own life.
Richard Klapholz and Alex Klarman must have felt the same way, because they, too, wrote a Theory of Constraints business novel. As their narrator says:

It takes me just a few days to read all four books... I quite enjoy the process... These new type [sic] of books, namely 'business novels,' are an effective way to convey new management methods. Who knows, if I'm successful with the turnaround ... I may write one myself.

I cracked up when I read that. I suspect their book (The Cash Machine) arose from exactly that chain of reasoning, because in all fairness, they're pretty horrible writers. The text itself is littered with grammatical errors, the characters are handed solutions without even a hint of struggling, and the only reason you can tell the characters apart is that practically every line of dialog starts with someone's name. And yet, despite the awful narrative style, the format works. It's not a great story, but the very act of telling a story is enough to make the business lessons palatable, and the authors are able to convey their lessons. (It's about applying Goldratt's ideas towards managing a sales team.)
In each of the ToC novels (or at least in Goldratt's), a complex, rational argument is presented in the form of a story. These aren't parables or the business equivalent of morality tales, but more like Socratic dialogs in which real problems are presented for the characters to struggle through. The books read almost like mysteries, with lots of puzzles to be solved. Often one character or another has part of the answer, but for one reason or another the protagonist has to fend for himself to apply that knowledge to the problem. In The Goal, for example, the elusive physics professor turned business guru name Jonah is constantly being pulled away by his hectic schedule, leaving poor Alex Rogo (Yep. I named my main character Alex as a tribute to Alex Rogo.) struggling to decipher Jonah's hints in time to to turn around his failing plant before the guys at the Unico corporate office shut the whole place down. 
The Goal was an international best seller, but the real magic is in the sequel, It's Not Luck. Thanks to his phenomenal success as a plant manager, Alex Rogo has climbed the corporate ladder and is now division manager. He's in charge of the Diversified Group: a collection of three completely unrelated companies that Unico picked up back when the economy was on an upswing. Now times are a little tighter and all three companies are about to get sold, probably at a loss. Now for the first time, Alex is forced to move beyond Jonah's conclusions and and instead use Jonah's methods to develop a generic blueprint for rapidly improving the profits of any company, or watch his career go up in smoke.

Alex and his team use the tools (called the ToC Thinking Processes) to develop generic solutions for constraint management, distribution, and marketing. The solutions themselves are well worth the price of admission (they're a bit like reusable Design Patterns for business) but it's the actual thinking processes that steal the show.

Each thinking process is based on the idea of if-then or cause-and-effect logic. The processes are carried out by manipulating box-and-arrow diagrams. There are five specific diagrams:
  • The current reality tree, for tracing lists of problems down to core conflicts
  • The future reality tree, for evaluating the effects of a proposed change, both to ensure the change will actually solve the problem and to identify potential side effects that ought to be anticipated and addressed beforehand.
  • The prerequisite tree, for identifying the obstacles that must be overcome in order to make a change.
  • The transition tree, for planning out the steps required to reach a specific goal.
  • The evaporating cloud or conflict resolution diagram, for communicating common objectives and uncovering hidden needs and assumptions in the face of an apparent conflict.
To develop the diagrams, the characters in the book use post-it-notes on a giant sheet of paper. I've used various diagramming tools over the years, like the free OpenOffice Draw. There are plenty of tools that are perfectly adequate for drawing box and arrow diagrams, but in many ways, they all felt inadequate - a bit like using a word processor to write source code. Sure, a word processor lets you do the job, but because it ignores the fact that the language you're using has follows a strict grammar, you miss out on things like syntax highlighting, matching parentheses, refactoring support, and those handy little buttons you can press to see your code running instantaneously.
For years, I've been dreaming of the graphical equivalent of an IDE for these logical diagrams. I've even tried (and failed) several times to build one. It was actually quite frustrating.
Which is why, when I discovered Flying Logic two weeks ago, I felt like a kid on Christmas. It's diagramming software that understands boolean logic. You can build a complex tree of cause and effect, group parts of the diagram into collapsible regions that you can collapse and expand (like the spatial equivalent of outlining software), and you can even drag a little gauge on each box to assert the degree to which you believe it to be true (Meaning that it actually goes beyond boolean logic to incorporate fuzzy logic).
Suddenly, the Thinking Processes went from being the big guns I pulled out when I was really stuck to being one of the first tools I reach for when I need to solve a problem.
Which is great, because I've got a lot of problems.

Or at least... I thought I did. 
I run a little web hosting company. It's called Cornerhost, and it's been my main source of income for over seven years. It does a pretty good job of paying the bills, too, but once in a while I do some programming work on the side for extra cash. 
I'd been working with this one particular client on and off for about nine months. I'd been working autonomously part time on a Drupal-and-Flash site for a client of theirs for several months (I'm not a big fan of PHP in general, but Drupal's pretty slick) and the day after I shipped the Drupal site, they asked me if I'd mind helping with this other project they were just finishing up and were getting ready to launch the next day. I said sure. Why not?
As it turns out, these guys were nowhere near ready to launch.
There were multiple versions of the site lying around. The design guy was working off a week-old snapshot of the code, while the offshore developers worked directly on the live site. None of this was under version control so I was up until midnight that first night, manually diffing and merging the files, and then checking them into CVS.
The product launch only slipped a few days, but that was only the beginning. I spent almost the entire month of September putting out fires, and building the backend systems they'd need to support the new customers. (Yep, systems they should have built months earlier.) 
It was grueling, stressful work. I wrote a post about it in my blog. I called it Work Without End.
The one thought keeping me sane was that pretty soon, the crisis would clear out, and there'd be time to breathe. I had the opportunity to take over management of the development team, which meant reigning in the cowboy coders overseas (bright guys who felt there was no time for good practices) and leading the local guys (really bright guys who'd been doing their best to introduce those practices bit by bit in the face of the chaos).
I spent way more time negotiating and clarifying communications than I spent writing code. And I actually liked that part. Because I wasn't bogged down writing code or answering customer support requests, I had the chance to see how the business itself worked. How ideas and work and value flowed through the organization.
For once, I was able to apply my ToC knowledge and locate an actual constraint! I even drew out a little diagram, showing the chain from marketing to content creation (these guys sell information products) to software development to e-commerce and fulfillment and customer support. Although they were a marketing-lead company, and there were many many problems in their software development processes, it was clearly lack of a stable e-commerce system was constraining their ability to grow. I really felt like I could make a difference.
And despite the fact that my phone bill jumped from the usual fifty bucks a month to over three hundred, the money was great. I even negotiated a 30% raise on my hourly rate to make up for the extra hours, so that I'd be able to hire help with my work at Cornerhost.
If only there'd been time. Unfortunately, I discovered that the next launch was only a month away. Maybe Alex Rogo could turn around a plant in 90 days, but I had no idea how I could ship their next product in such a short time. We were still putting out fires with the current launch, so there wasn't even any guarantee we'd have time to even start on the next one. But the CEO wouldn't budge. He wasn't interested in hearing about constraints. The next product was going to launch on Halloween. End of discussion.
Knowing that the hectic pace was destroying my hosting business, my health, and even the relationship with my original client (who was now eager to get started on the next phase of the Drupal site), I took the only decent choice available to me, and resigned.
The thing is, despite all the chaos and the hectic pace, this is actually a really cool company. The CEO isn't unreasonable, but he's not a tech guy and the previous tech managers, although very savvy when it came to the technical side of search engine optimization and marketing analytics, didn't really speak the language of business. I think to him, my warnings about needing to slow down sounded like more of the same old "developer vs marketing" infighting. The main offshore guy was even warming up to the idea of getting his processes under control.
Maybe if I'd already put in the work to solve the problems in my own company, then maybe we could have worked something out. Up until this project, they'd been a great client. So I had a nice long exit interview with the CEO, and we left the door open for an ongoing relationship. I even agreed to do a little part-time reverse engineering and documenting the offshore code, so that the local guys might be able to contribute. 
But first, I needed to take care of a few things, like the support backlog at cornerhost, the Drupal site changes, and oh yeah... the extension I filed with the IRS for my corporate taxes just expired, so suddenly that was back on my plate, too.
Meanwhile, I'd hired a friend part time to help with customer support, but soon discovered how much work is involved (at leas initially) in delegating. There's a tremendous amount of knowledge transfer that needs to happen. Regardless of the person's technical background, they still need to be brought up to speed on the Cornerhost way... And sadly, a big part of "the Cornerhost way" involves me doing things by hand at a command line.
Shortly before I got sucked into the maelstrom there, I was setting up a ticket system. I started back in August. I wrote about it in my blog, in a post called Learning to Delegate, part 2: Infrastructure (cute diagrams included).
I actually made some decent headway. I set up a python-based issue tracker called roundup. I've been using it successfully to collect the public issues that affect all customers or the business as a whole. You can see it yourself at https://secure.sabren.com/roundup/. If you're a cornerhost customer, you can even log in with your normal username and password. Unfortunately, I still haven't implemented any kind of private ticket tracking, so I'm still handling support requests manually through my email client. 
In theory, I could delegate some of the public issues. In fact, a handful are assigned to other people already. But with the exception of the friend I hired to handle the support (but can't put to work on support due to my poor systems), all the contractors I had hanging around have dropped off the face of the earth.
I can't even be mad about my developers vanishing, because I've done the same thing: October came and went, and I didn't even look at the offshore code. I haven't even talked to that CEO. It took three extra weeks to talk to the Drupal guy, and he even offered me an extra grand if I could get his stuff done within two weeks. I've finally started working on it, but I didn't even get started until several days after that bounty expired, and even though it was supposed to be my top priority, I moved at a snails pace this week.
So what the heck happened to October?
I'll tell you what happened: it went up in smoke, consumed by the great balancing act.
First, I was convinced that if only I could improve my development tools, I'd be able to whip up a much better tracking system that worked for those private tickets, and for publishing my knowledge base. See, I knew I'd need to write down instructions so I could delegate support, so all through August, I was keeping notes for how to do support things in this little outliner app I wrote. It's just another in a long, long line of half-finished tools I've created to help myself get organized.

Sure, it's a GUI-based outliner, but no problem. I figured eventually I could publish it to a website. Only I wanted to do it the "right" way - over HTTP PUT. So at the end of August I spent way too much time figuring out how to serve HTTP PUT requests in python.

I had the perfect place for it, too. An old web app I wrote called amoeba. It's a bit like a wiki, and a bit like a generic box-and-arrow data storage system. That is, it allows arbitrary relationships between chunks of content. As I said earlier, I never quite managed to build an actual boxes-and-arrows interface. You can see an amoeba demo video from 2004  that shows what I had in mind.
This was the app I built when I first read Getting Things Done. I was so inspired. With GTD, I'd finally found the system I needed to solve the flake effect - that terrible situation where good ideas piled up faster than I could ever get them done. I built just enough of a tool to let me collect and process all my stuff. I had big dreams for that GUI interface, but even just having a database was a step in the right direction.
Except of course it wasn't. I had so many ideas. So many unfinished projects. So many goals. Pretty soon everything was in one place (well, except for all that stuff that was still coming in through my email) but amoeba just didn't scale.

Eventually, years later (maybe mid 2007), I finally did make a GUI system. Over the years, I'd done a few box-and arrows experiments in wxPython.

I tried rolling my own. I actually made some decent progress in late 2005 with wxOGL, the open source box-and-arrow library that ships with wxPython. But I could never make wxOGL my own. It's a straight port of some horribly convoluted C++ code and even after days of refactoring, I wasn't able to get my mind around it.  On New years day in 2007, I complained  that the main Shape class had over 100 methods. No matter what tool I used, I couldn't even see the list of methods on a single screen. Eventually, other things came up and I never quite got back to it.
But like I said, I did make a GUI system. It didn't do the box and arrow stuff, but it's a pretty decent outliner, so at least I could sort and nest my ideas. It's not perfect. In fact, as an individual outliner gets longer, it gets slower and slower thanks to some drawing logic that I've never had time to optimize. But it has tabs and rudimentary style support, and it'll run on any of my computers, and one of these days it might make a nice little product... If only I had time. I was convinced that with the ability to order things, it would be the system to solve all my problems.
I never learn.
But it was good enough to use for collecting my support knowledge, so I wound up with a neat little knowledge base. And after I solved the upload "problem" in August, I was able to publish that knowledge base to a remote Amoeba instance over HTTP PUT, so I could actually share it. Plus, amoeba has a search engine, so now it wouldn't take forever to hunt down the right entry. It was going to be great.
So then I ran my little upload script and half the entries failed. Turns out Amoeba.... I'm embarrassed to even type this.... Amoeba cannot handle apostrophes.
Well, it's a bug in an obscure corner of one of my libraries. See, it's this neat little thing that lets you build a SQL where clause out of objects. This other guy contributed it to my framework a while back. I guess he was used to something like it in some other database library for python. We reviewed the code together, sharing a screen and refactoring together so I mostly understood it before I checked it in. But I hardly ever used it in any of my apps. In fact, I don't think I used it at all, except when I wrote that first version of amoeba. So I didn't really understand the codebase. Heck, I didn't really understand that part of amoeba's code anymore. Because of the need for arbitrary relationships between nodes, it's not a normal SQL database.

I wrote a whole essay about the data structure... Somewhere... It never got published though. Just another unfinished project.

Anyway, the point of all that was what should have been a simple fix for that apostrophe turned out to be a whole can of worms.

So here I was with a pile of backlogged support issues from the crazy client month, paying Support Girl by the hour to help me with the pile, but unable to give her anything to do (and thus paying her to do busywork), and so I found myself going round and round in circles, beating myself up about what to do first.
So I spent a week on documentation and streamlining my web framework. Remember I said I built that timesheet in a single morning years ago? I figured I'd try it in my current framework, and document the process. I spent six hours... Much of it building framework code that should have always been there.
I didn't even finish. Somehow, instead of that guy flipping back and forth faster than my boss could comprehend, my development habits became so clogged with doing things the "right way" and (perhaps more importantly) I spent so little time programming that I couldn't remember it all.
Luckily, I recorded the whole ordeal, including an audio track where I verbalized what I was trying to do.
I was able to go back and streamline all that work, so that I'm now able to duplicate all that work by typing a few simple commands. Even cooler, I can generate the code for my data classes and corresponding database tables from an XMI file (XMI is the XML format for UML diagrams, a completely different kind of box-and-arrow diagram that does have plenty of software support).  So now I can do everything that used to take six hours in a matter of minutes.
Except I still can't build a timesheet, because I didn't finish the process. I wind up with a database and a bunch of modules and files, but no user interface. It's easy enough to write the code. The only problem is I'm trying to standardize all this so all my apps work the same way. I want to put the effort in to write one more tool, and then get all my apps working that way. Right now, they're all using similar libraries, but it's not really a framework. Each app has its own style, which is part of what makes it so hard to move quickly.
Of course, by this time, It had been a week, and despite all that great work on documentation (including generated documentation), my docs didn't shed any light on that stupid apostrophe problem. So I compromised. I dropped amoeba and just published to a webDAV directory.
I could have done that from the start. That's always been the dilemma. Throw something together so I can solve the immediate problem, or do things right and take forever.
Of course, it doesn't help that I "have ADD", whatever that means. Or that I didn't seek any kind of professional help for my problems until a few months ago. What has helped is taking the ADD medication. Little by little, I'm starting to solve problems in little corners of my life.
But even that is not enough. Too much damage has already been done.
Over the years, I've buried myself in unfinished promises. Technology debt. Financial debt.
I've let my social life atrophy. I've neglected my old dreams of being a writer. Despite years of work, my business is still just getting by. And somehow the skinny little toothpick body I had even into my twenties has been buried under a hundred pounds of extra fat.
How is it possible that I can look at someone else's company and see exactly what needs to change, but when I look at my own company - or even my own life, all I can see are problems?
When I look at my support flow, I see the constraint in support. When I look at my development process, I see the constraint there.  When I look at the habits of eating and work and exercise I see a flow of calories and I see a constraint.
I'm left with nothing but the same excuse I gave that CEO. Sure, I could turn it all around... If only I had more time.
If only I could be like Josh Waitzkin and just my energy on mastering one single thing.
If only support would go away for a while so I could fix my code. If only my code would work right so I could focus on support. If only I worked out more often so I could approach my problems with more energy. If only I'd filed my taxes or told Mr Drupal Guy that I couldn't do his site. If only I had a marketing system that worked so I didn't need the extra cash.
If only I hadn't gotten caught up in the moment and announced that I was going to write a freaking 100,000 word novel in thirty days.
It's one thing to optimize a process, but how do you optimize your life?
In Goldratt's novels, everything always boils down to a single constraint. But this isn't just a novel. This isn't just business. This is the real world.
And yet... Is it possible, if we look deep enough, that we each have an underlying constraint that affects everything in our lives?
Could there really be a single constraint? And if so, what exactly does it constraint? What is the system and what is flowing through it?
Is there really a simple answer that can change my whole life? Not some mystical mumbo-jumbo like "finding Jesus" or "the law of attraction" but a concrete, logical answer that will suddenly turn it all around?
And how silly will I look writing this if the answer turns out to be no?

I don't have an answer to any of those questions. But I do know this: my life didn't get this way by magic. There's a logic at work. There's a reason I never seem to live up to my potential. Somehow, I'm doing something wrong.

If the flake effect is a really an effect, then it has to have a cause.
All I have to do is find it. 

Look, my shelves are filled with books that have changed my life in some way. Books I've mentioned like Wild Mind and It's not Luck and Zen and The Art of Motorcycle Maintenance and Getting Things Done now Waitzkin's The Art of Learning.

If I'm going to write a book, why not write a book that matters?
Why not write my own Ishmael or Maverick or Awaken The Giant Within?
Yeah, yeah, I know. A novel about a guy that sits in front of his computer and thinks probably isn't going to turn into some great work of literature. Nobody wants to hear about my life.

But that's not the point. 

I could make up a character and call him Alex or Fred or Leroy or Phaedrus. Or I could really overreach my rusty writing skills and shoot for a female lead. I could use a third person narrator and invent a nice realistic guru character to be this story's Jonah.
This story's main character doesn't really matter. This isn't really about me. This is about a friend of mine who also loves to write, and who's actually built a fan base for his writing, who works like a demon when called upon by clients, and yet who never seems get that books he's dreaming about out the door. This is about about my friend the body builder who's never quite finished that workout video. This is about the thousands of hopeful writers that signed up to write a novel this month because they're sick of waiting for someday to write that book... This is especially about the ones that signed up to start today and didn't.
Since it a story, and it has to be about somebody, I'll take the easy road and pretend it's about me.
But, basically, this is a book about a problem.
This is a book about the Flake Effect.
It begins with an email.