without an e michal j wallace atom feed

Carmine is in Jail

So. Carmine Baffa, the NLP trainer I used to work for, has been charged with raping teenage girls and ABC is posting ten-year-old quotes from me praising the guy in glowing terms.

A lady from the AJC contacted me and asked what I thought about him, and about the charges.

I told her that I was surprised.

I'm not surprised that he's involved with his clients. NLP practitioners are to real psychiatrists what acupuncturists are to real doctors. There's no professional licensing or regulation, and no ethical rules about not dating patients. In fact, they're not even patients. Just clients. The lady he was involved with when I met him had been a client.

But real psychiatrists have those rules for a reason. When someone puts their emotions in your hands, there's a huge responsibility. What he did is just plain messed up, and despite my low opinion of the guy, I'm surprised he crossed that line. Especially with a 13 year old. If he really did that (and it's certainly possible), I'm glad he's in jail.

Anyway, I posted a long disclaimer above my 1998 review of Carmine's traning.

refactoring gtd for email

Here is a simplified version of David Allen's Getting Things Done Algorithm for email:

def actions(mailbox):
    result = list()
    for email in mailbox:
        next = nextAction(email)
        if next.estimate <= TWO_MINUTE:
           do(next)
        else:
           result.append(next)
    return result

for item in actions(MY_MAILBOX):
    do(item)

This is python code and it does something that I have come to believe is bad coding style in python: it appends data to a list.

There's nothing particularly wrong with list.append(), but for many programming tasks, your code becomes a lot more useful if you use a generator:

def actions(mailbox):
    for email in mailbox:
        next = nextAction(email)
        if next.estimate <= TWO_MINUTE:
           do(next)
        else:
           yield next

for item in actions(MY_MAILBOX):
    do(item)

This doesn't look like much of a change, but the two programs are completely different.

In the first version, all the TWO_MINUTE or less actions are performed up front, and then the larger actions are performed in a second sweep through the generated list.

In the second version, each item is handled exactly once, and done immediately after the next action is determined. In fact, the code can be further simplified to this:

for email in MY_MAILBOX:
    next = nextAction(email)
    do(next)

Or even simpler:

[do(nextAction(email) for email in MY_MAILBOX]

Python handles these last three versions a bit differently, but they all process the mailbox by selecting the next action and then doing it immediately.

I would assert that this is much better python than the original, but more importantly, I believe this algorithm is actually more productive in real life for answering real email.

There are several reasons for this:

First, no value is delivered to the customer until an email is actually answered. This is just basic Lean Thinking. In theory, passing through the mailbox up front and recording the next actions should maximize throughput: all the two-minute tasks are delivered immediately, and then you've already thought through the other tasks so you know which of those you can deliver quickly.

Unfortunately, there is a disconnect between the email box and the next action list. There are all sorts of reasons that this disconnect happens:

  • a single issue is often broken up across multiple emails, mixed in with other emails about separate issues from the same customer
  • a single email may require multiple independent actions before it can be answered
  • in general, email clients do not allow you to arbitrarily re-arrange emails in a list or outline, so there is little tool support for grouping emails by issue - usually, the best you can do is sort by sender
  • in general, email clients do not offer the ability to annotate email, so the action list has to be maintained in a separate system

The disconnect between the next action list and the email client creates a tremendous amount of waste. Everything I've tried requires a tremendous amount of cutting and pasting and cross referencing. I've personally spent quite a bit of time implementing my own email client to address these issues. Perhaps someday I or someone else will create a tool that successfully eliminates this disconnect, but in the meantime, it's a lot of wasted time and effort.

In my particular case, the wasted effort creates a cognitive burden that can dramatically slow down response time. Maybe I'm just an edge case. I have hundreds of clients with varying levels of technical knowledge, all attempting to do different things. When I try to track it all on a next actions list, I get overwhelmed and distracted, and by the time I'm halfway through, even more emails have come in, and hardly any have gone out. For me, in my business, applying the GTD algorithm to email slows things down even further, time and time again.

With the generator approach, things move much more quickly. The effort of tracking next actions is (mostly) eliminated, because I only have to define the next actions for the email directly in front of me.

With only one email to track, it's much easier to generate a complete step-by-step plan for how to answer the email (rather than just thinking through the first step). These plans can be reused to speed up future responses, used to train employees, or refined over time into automated solutions. These small plans can then be implemented and refined immediately.

But what happens if the oldest email in the stack requires hours of work? Won't that hold up the rest of the queue? Well, yeah. So the appropriate response is to answer the email, create an issue in a proper tracking system, along with a note to follow up later with the customer.

The above concept is similar in spirit to what the next action list is really supposed to be about. Allen's point is to get all your work into one tracking system for everything. I guess my point is that since email and actions don't have a one-to-one correspondence, it makes sense to get things out of email as quickly as possible and either deal with them immediately or move them into a real GTD-friendly tracker.


Endnote: You could get a similar effect in the original algorithm by increasing the two minute cutoff to a much higher value. It amounts to the same thing: answer as much email as possible immediately. Track everything else in one system outside of email.

a valuable lesson about li

So, I've been working on this outliner, and it's been great for organizing and indenting simple strings. But now I want to add arbitrary objects to the outline, and it's taken a lot of heavy thinking to get right.

Specifically, I want some of the items in the tree to represent trouble tickets or new, unread emails, and others to contain GTD-style next action items with a time estimate. (GTD doesn't really call for an estimate, but being able to put an estimate on an item is a good indicator that it really is a performable action and not just a stray thought - especially if the estimate is in minutes instead of hours, days, or months.) Also, I just want some of the nodes to allow basic HTML tags like em, strong, code, and anchor links.

The question is, how do you store this?

The plain-string version uses the XOXO outline format, which is basically just the subset of XHTML that deals with lists. XOXO is nice because it means your outline files are also valid XHTML fragments.

Unfortunately, everyone knows you can't put arbitrary XHTML nodes inside the li element. You can't put headers or paragraphs or images or preformatted text.

Except it turns out list elements can include just about anything.

I have no idea how I didn't know that.

Anyway, the upshot of this discovery is that my outline files can remain 100% pure XHTML, so what I'm building isn't just an outliner but also a web page authoring tool. Neat.

attention surplus disorder

I used to think that I might have attention deficit disorder, because I have trouble getting things done and doing what I set out to do. But now I think my problem is exactly the opposite. It's not that I have trouble focusing, but that I waste time focusing intently on the wrong things for hours on end.

Obvious examples include television and link sites. I hardly ever watch broadcast TV and I don't have cable, but I've been known to buy an entire season of a show and watch every episode back to back. I lost a solid week to Grand Theft Auto: Vice City and probably more than that to San Andreas. Even back in 1996, when I spent the summer writing a short novel, I had to forcibly stop myself from playing Starflight II because I knew if I didn't I would never finish my book.

When I started playing poker a few months ago, I wasn't worried about losing my shirt, but I did worry tremendously about getting obsessed and throwing my life of balance. That's exactly what happened.

But before that, I was obsessed with personal test cases, and that obsession seemed to work quite well. I'm trying my best to get back there.

But while I get obsessed with games and entertainment, I also get these little micro-obsessions with whatever happens to be in front of me. The most recent example happened about three minutes ago, when I linked to my old novel. I spent a good fifteen minutes just cleaning up old HTML, fixing URLs and writing a new introductory paragraph.

The problem with these little tangents is that they spawn tangents of their own, and pretty soon I've forward chained myself into oblivion.

The problem isn't forward chaining per se because jumping from one topic to the next can uncover some pretty interesting new ideas. The problem is stopping.

This is especially hard for me because I tend to keep myself rather isolated. When I had a girlfriend who got up at set hours and came home at set hours, there was sort of a natural structure to my day. But on my own, I tend to just work on whatever interests me, until I fall asleep or get interrupted. Often I run out of groceries and then after getting hooked on something for hours and not eating I wind up buying fast food just because it's fast.

One of the big changes I made along with the test cases last time around was to adopt a daily schedule with set times for everything. I even made a little GUI schedule program that showed a color-coded daily plan with a cursor bar showing the current time and what I should be doing.

It worked really well when I managed to stick to the schedule. I've got it up and running right now. It says I should be practicing piano, and that I should have already worked out, answered my email, and worked on my marketing system.

Uhhh.... Nope.

Ever since reading Neil Postman's Teaching as a Subversive Activity, I've been thinking about Marshall McLuhan's statement that the medium is the message. (I bought McLuhan's Understanding Media but it's pretty dense and it rambles more than I do so I didn't get very far yet.)

Postman's thesis is that the structure of school is designed to produce people who deal well with boredom, memorize and regurgitate answers, and basically do what they're told, and that by changing the format, teachers can create a system that actually encourages kids to think for themselves. He's not arguing against education, but the actual structure of school: one person in front of a room presenting canned information in a canned order, all regulated by standardized tests, and so on. Even the best teachers are constrained by that system (or medium) and have to work within it if they want to keep their jobs. (The book came out in 1971, but it's still a great read today.)

We use the word media today to mean video, audio, or the various news networks, but that's not how McLuhan, who popularized the term, defined it. McLuhan's idea of media includes movies and books and print, but also speech, numbers, roads, houses, money, clocks, telephones, clothing, bicycles, cars, airplanes, weapons, typewriters, and automation. He devoted a chapter to each one of these in Understanding Media. Is original concept of the word is much more like the idea of technology. The subtitle of that book is "The Extensions of Man."

I've been thinking a lot about media for productivity. I don't see any reason why there can't be a technology that makes it natural to be productive the way a television set makes it natural to be unproductive. And I've thought a lot about what that technology might look like.

For me, it really comes down to four areas:

  • defining contexts (projects or roles)
  • allocating time to those contexts
  • maintaining a queue of concrete next actions for each context
  • presenting the user with a steady stream of small, time constrained next actions

The first two items are straight out of Seven Habits, and number three, of course comes from Getting Things Done. But both of these systems still require a certain kind of person to implement them. You have to be motivated, disciplined, and vigilant - at least long enough for the habits to become ingrained.

The last item is my contribution. I want something external to my brain that will actively gather, sort, and refine my ideas, then feed them back to me one by one to implement, and that will also remind me of my goal whenever I get off track.

I suppose the particular wheel I'm reinventing is called a boss, but why be your own boss when you can build one?

I've said many times that I write to figure out what I'm thinking about. That's why this isn't a structured essay but a long ramble. I'd like to clean it up and refine these ideas, and turn this into an essay and make a real content site about productivity... But really my main goal right now is just to figure out what's missing.

See, I've already built the thing. I've got an outliner with tabs and the daily schedule. And I feel very organized. But that last piece is still missing.

Right now, what I have is no better than a traditional organizer or to-do list... Well, it's got a cute multi-tab interface so it's a little better... But it's still a thing that sits there passively and waits for me to act upon it.

What I want instead is a thing that actively influences me.

Hey! It's time to work on support. Here is your first unanswered ticket. Is it clear what they're asking for? Yes? Do you have a canned answer? No? Okay, do you know how to do it? Great! Let's solve their problem and record the procedure for next time.

Or later: Time's up for support. It's time to practice piano. I'll just fog your the screen up and keep you from doing anything else until you're done with practice. Can't do it right now? Okay, we'll override, but let's record what happened here as an incident report...

Basically, what I'm missing is the feedback loop. I actually wrote a little natural language "goal coach" chatbot that can help me break a goal down into subgoals. And I have a timer that can fog up the screen. And I have a scheduling system, and an outliner for defining queues of next actions. It's all clunky, alpha-quality code, but it works. I guess all I'm really missing is the master loop.

two card stud

Not much to look at yet, but if anyone cares I've started a poker blog:

Two Card Stud
Blunders and Lies from the Worst No-Limit Holdem Player on Earth

Yeah, I know, I'm setting the bar pretty high.

 
i'm the guy that runs cornerhost

archive

game tools: haxe and scala

almost there

failure to launch

my programming story

python fruit basket

short-term programming work needed

old years day

testcase earworm

tests and meta tests

roles vs goals

a foolish consistency

crash

grouping by timeframe

lifetime hosting offer ending soon

Test Tweaks

fifty percent

Personal Unit Tests for Year 32

Reinventing the Wheel vs Making Your Own

Invoking AutoHotkey from Python

12 Strikes : Lessons Learned from Yearly Goals

effects of going open source

an encounter with the epoch bug

cruel python

feed list quality

Brickslayer Alpha

tricentennial project

trailblazing brickslayer

best of without an e

opening up

trailblazer jeopardy

clarifications on trailblazer

trailblazer and the curse of knowledge

Reddit Out, Reader In

newfound focus

continuous testing made easy

narrative testing and alphabetized code

neurolinguistic gruntwork

little bit of a breakdown

progress report

a debate

popular demand

What python looks like naked

When you read code, imagine typing it by hand.

the lython stirs

embrace the heresy

ecdysis

damn you, haskell!

writing for real

PyPE : a python programmer's editor

baked potato bags

twenty four inches

take my turcanator, please

beware of forward chaining

i tried cocaine

rambling goal review

all about sendmail

feng shui and phantom goals

where the hell is the tape?!?

the night i became an atheist

burnout

breakfast with cron

inelegant design

Once I Built a Timesheet

three month mark

last day for donations

outsourcing the workshop, part 2

dcd hosting

training the monkey

eighty sixed

outsourcing the workshop

nice relaxing weekend

dear amazon

color my code

prototypin'

red hot pawn

opportunity cost

brickslayer

let someone else do it

systematic marketing

calculus

the turcanator

one month checkin

the view from saturday

platonic refactorings

Input Envy

The End of Secret Holds in the Senate?

askdjfladjflkajf

The Twelve Goals of Old Man Wallace

mispoken

thirty miles and some physics

the guy in back

c sharp run

clipless

Listen to me clearly now I said...

all kinds of stuff

vegging on cyberspace

freedom vs discipline

smacking my head

gabe and alex

monroe

boring journal entry

making nice with rails

another stab at blogging

quadrupal your productivity with greasemonkey

I hate Rails, I hate Nails

a bigger pond

training for consistency

always on

narrative strongbox?

identity crisis complete

learning lisp

sugar free

baby blogs

testing

short day

inner vision

blog on demand

code consolidation

timelog

life balance

elliptical

being quiet

making a list

recovering

i feel like crap

fuzzy logic

programming with outlines

sleep deprivation

three months to live

november review

cooking dinner

speak simply

and now a word from our sponsor

tempted by firefox

research and marketing

setting a date

trailblazing nodak

tree grids

control freak

display logic

use cases

virtual notecards

three little pigs

goals for the book

tinderbox

the flake effect

gimp costume, and other crap

rise of the rantelope

on not writing a novel

a lean workday

200 calorie root beer float

everything hurts

many faces, fat and skinny

hurricane wilma

the old blog returns

biking to stone mountain

doubt and faith

a story

on trust

libertarian thoughts on the election

mental leaks

time flies

comments and permalinks

voting with my feet

next action inventory cap

common ground and puppies

into the fishbowl

cleaning house

isomorphic engine

grumbling and use cases

slow motion

simple mind

work, macs, visual thinking

bug bite

working

what all be up in here

goals and issues

new wheels

planning with altos

still kickin'

Zen Master Chi

sweeping

spacevarmints.com

registration and multiple windows

palm pilots at sunrise

walk the earth

LETSBank!

sea level retraction

pirate update

the next thing

10 questions

a darn good question

enslaved by spamcop

pirate week (again)

your marketing sucks

future fat days

weight-time

money-time

critical chain

parkinson and murphy

crunch time, scope creep, and constraints

web wizards

dilemma

how to fix the internet

rat's nest

dumb mistakes

ambient orb

billing and signup week

pirate 0.01 alpha (click to check it out)

last day on pirate (for a while)

college roomies from hell

feng shui

ambience

on to c

list comprehensions!

commitment and debt

pimp

goals are expensive

the diamond age

next action

green day!

pirate

i am rantelope, hear me roar

24 hr novel: post mortem

greed sex and murder

scene and summary

blogathon / greed sex and murder

crayons

step one: bitch

devin and alice

whatever

rantelope revised

a rant about rantelope

circuit vendor

thinking physics

tachyon ethernet

north korea

big

still kicking

things to do

pick one

the other side

ugly deer and shareware comics

vector space search engines and the stock market

doodled in flash while listening to tony robbins

rotflmao!

a story

chapter one

body for life: take 7,394

the adventures of sleepyhead

failure to communicate

better browsers through porn

the real story

a day in the desert

angelina

a tale of two twains

python and OpenEEG

leadership forum

don't be a thug.

drawing cars

carbon

dividend taxes: just say no

the quiz

popular

time for a change

without an e