Dreams, A Personal Insanity

1.

It was kind of my friends to throw me a surprise party, but the jovial mood was tainted by the presence of my nemesis. I knew this stout black man from his neighborhood pool cleaning service but apparently he moonlighted as a cake baker. And tonight, not only was he baking my cake, he was extorting six dollars from me for a cake pedestal—whatever that was.

Ah well—I brushed it off and returned to the party, replete with champagne and cubic leather ottoman. It was a clear night with the stars overhead and enough of a chill to keep formalwear comfortable. Everyone was having a great time. Wait, maybe not. I spotted Kyle sitting alone, clearly dejected, on an elevated balcony.

I grasped the cold metal ladder leading to the balcony with the intent to climb to my friend. It was made of flattened steel pipe, pressed into an oval cross-section. I tried to put my foot on the first rung but it quickly hit the wall behind, leaving only a couple inches of traction. Still, this should have been easy. Then it hit me—I was drunk.

With newfound knowledge of my condition, I gave up my ascension and stumbled to the nearest ottoman.

It gets fuzzier after that.

I couldn’t tell you who she was, but she was beautiful and her tongue was down my throat. In the fitful gaps between rapid-fire kisses I was attempting to sing “birthday kiss” to the tune of Jeremih’s Birthday Sex. In the moment we both seemed to think it was clever. In retrospect it’s downright embarrassing. In any case, “all’s fair in love and war”, and I tend to think of flirting as the intersection of the two.

2.

I awoke in a psychiatric hospital. I might have said this was my first day there but I knew where to go and I knew what they wanted. They were trying to steal my urine.

I got out of bed and tread lightly down the monotonous white halls in my flimsy hospital gown. I ducked into an alcove when I heard a nurse approaching with a gurney. I waited, breathless, until he passed. This was serious business. I passed the men’s restroom on the right. I had to go, but I couldn’t go there—the urinals were tapped! I knew the enemies’ ways. I’d have to find a potted plant or something; that would be safe.

I took a later right turn into an open doorway and sat down across from the only friendly face in the hospital. She looked like Janeane Garofalo in Rivers Cuomo glasses. I’m not sure if that’s good or bad, but at least we could talk.

And so we did. We talked at length about life and love and I espoused the view that at a base level, attraction is not a choice, and that only the magnitude of attraction can be consciously influenced. She seemed receptive.

I asked her about her passion for her occupation as a psychologist. She sat in awkward silence, struggling with a cacophony of internal conflict, and then, with an uncommon honesty, admitted she’d had none since her teenage years. And so we sat, in wake of the tragedy of irreclaimable years and the majesty of young dreams—the liberation born of destruction—and I knew we were on the same side.

I looked to my right and for the first time noticed that we had company in an adjacent room with a connecting window. We were being watched, but not too closely—they had ordered Chinese and were divvying it up for lunch. I leaned forward and strained to read a small white tag attached to a polystyrene box. It read “Tso’s Forward Chicken”.

3.

We did it. We defeated them.

It would be laborious to explain every battle with each of the twelve uniquely vulnerable foes, but the tale of the last is quick enough.

We drove on an oval racetrack, Matt at the wheel and I in the passenger’s seat. In the center of the track was a raised stage and atop that was the beast.

He must have stood forty feet high. His feet were metal pinchers and his legs were giant braids of cable; twisted mechanical sinews. The legs connected to the body via large, flat metal rings each with a single large barb protruding towards the sky. It had a carapace like an insect and a face too horrible to describe.

We circled it at high speed, dodging its deadly pincher attacks. But it was impossible to maintain control at these speeds. Our vehicle kept scraping against the outer wall of the track. The heat from the friction was palpable and I imagined the frame of the car thinning, grinding away that which kept me from being ground away.

Just then we discovered what we needed to slay our foe. We found the weapon on the track, as if spawned for this purpose—a power-up. A rectangular wooden crate emitting a soft pink light. “The Physical Embodiment of Love”.

We used it to obliterate the beast.

4.

Over the stacks of yellowed keyboards and discarded soda cans, her husband’s obese face could just be made out in the ungodly light cast by the computer monitor. He was insisting once again that it’s only natural for a child to know how the human body works. Slothfulness yielding to agitation, she relented and agreed to teach him.

With a hefty sigh and a complaint about the clutter, she pushed aside her half-eaten salisbury steak TV dinner and a curious little metal device like a miniature swingset with dozens of tiny chrome skulls suspended by wire in place of swings. The skulls clacked together in reply.

Taking pen to paper she carefully drew out a human form, with each small area of the body represented by a complex, curved shape. The shapes interlocked cleanly, never overlapping; composed of fluid lines, together they comprised a baroque human figure.

She hobbled over to a desk in the corner, and from a shallow, felt-lined drawer she produced a set of knives, one-by-one. The knives were ornate and of impractical form, but each she carefully placed on an adjacent table. Each played the role of a shape in her drawing—a map of sorts—and the knives formed the figure of a human being.

She presented it to the child—his education was now complete.

Follow-Up

If you’re hoping for some sort of unifying logic, sorry, I don’t have it.

All of this is exactly as I dreamed it, without added embellishment. Strangely enough these dreams took place back-to-back on a single night in late January. Crazy, huh?

Let’s wax intellectual for a moment:

  1. Is it possible that dreams, by feeding random input to the experiential parts of our brains, pre-wire our neurons for creative thought?
  2. Does anyone have a recipe for Tso’s Forward Chicken?
Monday, February 8, 2010 — Comments
It’s that simple.

It’s that simple.

2010 Plan & Goals

Yeah, sure, New Year’s resolutions, fine. Well I sort of missed it, so I gave myself until the end of January to plot my year.

I generally wanted to embrace the S.M.A.R.T. (Specific, Measurable, Attainable, Realistic, Timely) goal-setting concept where possible and practical, so what’s below is divided into the discrete, check-it-off-when-done tasks, and the more abstract goals I’ve haven’t wrangled into task form (or don’t want to take the time to track, like some of the dailies).

Here’s the blueprint to build a 2010 that I will find awesome in reflection:

Entrepreneurship

Know how to execute most small business plans so that I can rapidly convert ideas into experiments; know how to run a company successfully.

  • ☐ Start another company
  • ☐ Outsource some business tasks to solidify understanding, eliminate barriers
  • ☐ Create a short document synthesizing what I’ve learned about marketing

Health

Improve and then maintain health, optimizing for longevity. Try for (and realistically achieve) the best health of my adult life.

  • Resume running regularly
  • Spend 30+ minutes outside everyday (weather permitting), for general sanity and for vitamin D
  • ☐ Complete Couch-to-5K (stopped last year after getting sick and then hitting the cold winter)
  • ☐ Experiment with meditation
  • Synthesize, internalize, and share (☐) newfound knowledge of nutrition

Language Learning

Solidify Japanese, then start thinking about another language.

  • ☐ Learn all 1,945 Jouyou kanji (meanings only), know ~400 at present
  • ☐ Take the JLPT (level 3? 2?); December 5th, registration in July

Meta

Optimize and systemize personal processes.

  • Incorporate more feedback and optimization (data and accountability)
  • Systemize goal-setting process (even if a 90% solution)
  • Create a heroic personal definition and attempt to live up to it
  • Write personal stories (especially for 2009)
  • Stick to GTD. In fact, do it better

Money

Develop sources of location-independent, automated, diversified income. Wisely manage the money I have.

  • ☐ Create two more income streams
  • ☐ Achieve net positive cash flow (even if this must include active income)
  • ☐ Earn $1k per month in passive income by the end of the year

Social

Overcome anxieties (however small), make smalltalk, make more friends, be friendlier to strangers, be a better storyteller. Network better.

  • Participate in more groups and be a better participant (more regular, more engaged)
  • Embrace opportunities to enter new social circles
  • ☐ Hang out with a new friend every month
  • ☐ Re-engage an old friend every month

Travel

  • ☐ Visit at least four new places
  • ☐ Visit at least two new countries

Writing

  • ☐ Write at least four blog posts per month
  • ☐ Complete at least one longer project (15+ pages). Book? Ebook?
  • Be more attentive to writing effectiveness

Other

  • ☐ Read 24 books (19 in 2009)
  • ☐ Learn to surf

The plan is to track these items on this template (plain-text, markdown formatted, Unicode encoded). If you’re tracking your goals you might consider stealing some chunks of the file. Or, if you have improvements, I’d love to hear about them!

Sunday, January 31, 2010 — Comments

Questions About The Apple iPad

Well, the Apple tablet, the “iPad” was just announced. I was fairly accurate with my predictions for the device: 9.6 in. screen, 3G internet connection, $499 price tag. Now that we have the details we’re left wondering how this fits into our repertoire of technological devices. What can it do for me?

Developers seem to be on the fence. For the most part we’re thinking it’s too phone-like to replace our laptops, and too big to be a phone—why would I shell out $500?

I think that rather misses the point. Sad as it is to say it: developers, this isn’t for us. You can get bigger hardware bang-for-your-buck elsewhere, and you’ll probably never be able to code on this thing.

But the key is that it’s genius for the casual crowd. The people who mostly just browse the web, watch youtube videos, and shoot off the occasional email will likely find it a beautiful and ideal device to kick back with on the couch. The Kindle owners also have to start wondering what they’re doing on an expensive, even more limited device.

Furthermore, it’s genius for the publishers. With newspapers dying, publishers are begging for a bailout. Built-in monitization solutions are the future of computing. And in this day and age, how long did we really expect a black-and-white, static display (i.e. the Kindle) to be the dominant device for reading?

In any case, I have lots of outstanding questions about the device, and some of the answers will perhaps make a difference in its success:

  1. How usable is the screen in direct sunlight? To truly convince the Kindle owners it will have to be very good at this (though I’m not suggesting convincing all the Kindle owners on the technical merits is actually that important to market domination).
  2. Is multi-tasking supported? If not, are there push notifications? There hasn’t been any sign of them. How do I even know if I have new emails?
  3. Is the strangely spacious home screen featuring tiny icons really the best interface? I’m assuming that’s to make the device trivial for iPhone users to work with, but couldn’t that space be used for something awesome?
  4. Still no wireless syncing?
  5. Can I run the applications I’ve already purchased for my iPhone on both devices, or will that require a second license (/purchase)?
  6. Considering the size, is it possible to use the keyboard without setting the device down? Seems like that would be horribly annoying.
  7. Is there a general purpose filesystem? With the addition of more fully-featured applications like the iWork suite, isn’t it time to move past the filesystem restrictions of the iPhone OS and allow for sharing of files between apps?
  8. Are we developers getting an iPad simulator soon? I see it’s already available.
  9. Will there be an iBookstore and reader for Mac OS?
  10. Can I connect it to my TV to share multimedia content I’ve purchased with others?
Wednesday, January 27, 2010 — Comments

2009, A Year in Review

When I sat down to write this I was convinced that 2009 was a fairly crappy year. I feel like I spent about half the year blocked by circumstance from doing the things I really wanted to do. But after compiling a list of how I actually spent my time I realize that while it wasn’t everything I hoped it could be it, it was still pretty freaking cool.

Here’s a list of some of the more interesting occurrences of 2009:

  • Went camping on a whim in the cold in Tyler State Park, read Walden in the woods, “lived like men”, admired the constellations in the clear air, tried to catch fish with bamboo poles, cooked over an open flame, and tried not to freeze to death sleeping on the hard ground. (Jan 9-11)
  • Finished my Flying Saucer 200-beer tour (begun in 2006) with a tasty Maredsous 10! Look for my plate on the wall in Addison! (Jan 19)
  • Lost my best friend for reasons that have never been explained to me. (~Feb 20)
  • Completed my in-person interview in Houston, the last step in the applying to the JET Programme. Stayed with my incredibly awesome cousin Chris (Feb 24). Eventually got JET alternate status, considered it, and finally withdrew my application in late June instead of waiting even more months for the possibility of teaching in Japan (I hate waiting).
  • My paternal grandfather passed away and my family met up in Simi Valley, CA for the funeral. Instead of simply grieving, it turned into an incredible, rare opportunity for all of us to get together and enjoy life. I’ve never had more fun with my family or felt closer to them. Lots of card-playing and midnight Del Taco runs. It’s also way more fun than I expected to drink with the family. (Mar 5-8)
  • Decided to undertake what I called Project Life Reset, with the intention of disconnecting from my current situations, eschewing ties to any particular location, living cheaply, traveling, and really living instead of simply existing. I wasn’t able to fully enact my plan due to exterior constraints, but the motivation is still there and constraints are nearly gone (2010 is going to rock!).
  • Followed my convictions and quit my job on the beliefs that now is the best time to do most anything, and that 9-to-5 is a deadend for me. (May 29)

    The view from the office I left to be in that world instead of just looking at it out the window.
  • Turned 25 (the last age I’m even moderately comfortable with). Getting oooold. Celebrated (grieved?) with friends at Gloria’s in Garland. (Jun 17).
  • Logged night after (late) night in the pool and hot tub over the summer, having amazing philosophical conversations, drinking copious amounts of alcohol with Matt, Richard, and other irregulars.
  • What started as a fast food run turned into an impromptu adventure one late night after I talked about experimenting with hobo living. We ate under a highway, wrote (harmless) graffiti, then walked miles in the darkness of abandoned Dallas train tracks, including a rickety, decrepit bridge 20+ feet over questionable waters. (Jul 1)

    The view when we finally emerged from the treed path of the tracks.
  • Spent many, many days at my café “offices” of Escapé and Java & Cha (mostly working on Raconteur and writing), to the point where the J&C girls would start making my drink before I even ordered—being a regular is fun!
  • Took up running. Started the Couch-to-5K program, something Richard had mentioned over the summer; made serious headway but stopped after getting sick and then the weather getting cold.
  • Visited my mother in Nebraska, put together a website for her (Aug 24), taught her about SEO, and drank Bombay Sapphire and tonics with my step-dad.
  • Fired a revolutionary war-style black powder gun (reproduction) and an original Winchester shotgun from 1897! (Aug 30)

    Reload!
  • Traveled to the Black Hills, SD: saw Mount Rushmore and lots of bison, as well as signs of an upwardly-mobile Chinese middle-class. =) (Aug 31)
  • Started my first company, Too Much Tea LLC (Sep 14)
  • Laura and I ran a 5K (Sep 19)! Probably no big deal but I’ve never been a very physical person and I never imagined I’d run a race of any kind.
    My running bib. Note the beer knurd shirt!
  • Attended the Fall Festival in the Japanese garden at the Fort Worth Botanical gardens (gorgeous!). Koi, ikebana, banzai, koto playing, sushi, odori, tea ceremony, taiko, oh my! (Oct 25)

    I shit you not, this is in Fort Worth.
  • Wrote and released (Nov 19) an app for iPhone called Raconteur.
  • Got in a horrible car accident on my way to Louisiana to see my family for Christmas. Totalled the car, lost the presents, but managed to escape mostly in-tact! Might have been live affirming had I not already been sold on life. (Dec 23)
  • Adopted an attitude of materialistic minimalism. Reduced my possessions. Not drastically, but a good start.
  • Read 19 books (not great, not horrible) 16 non-fiction, 3 fiction.

    Part of my library and a very tired me, packing.
  • Wrote TONS. Mostly unreleased, but I have picked up the pace of polishing and releasing since the start of 2010.
  • Stopped watching TV (I see a bit here and there but I don’t follow a single show).
  • Learned to better organize and track my life using a GTD-like system, ToodleDo, Raconteur, and a variety of on-paper methods. Projects, tasks, responsibilities, goals, and daily activities all recorded with decent regularity (though there is room for improvement).
  • Learned quite a bit about company structures, taxes, entrepreneurship, and marketing.
  • Learned approximately 400 kanji and increased my Japanese vocabulary with the help of Smart.fm.
  • Generated 118 business ideas (of varying quality) in one hour to prove it could be done.
  • Defined what I’m living for by identifying 67 life goals and planning steps to achieve them.
  • Generated and honed lots of great new ideas for company projects and made good starts on some.
  • Spent way too much money keeping my pets alive. They’d better be grateful. =)

    Mr. Sixxington and his thinkorswim monkey.

Things I’ve loved this year:

  • Sunday phở! Fills my stomach, anchors my week, and generally makes me feel good about life. The ultimate comfort food. I’m still partial to Bistro B (thanks, Keli).

    Photo by avixyz.
  • Sherlock’s. I can’t quite call it my favorite bar in Dallas (that honor probably still goes to Kona Grill), but nowhere but Sherlock’s has delivered such a reliably great experience. Always a crowd, always live music, and always great service from the coolest waitresses around (thanks, A., J., P.—you guys rock).
  • Gunpowder ginseng green tea from Central Market. Cheap and delicious. My everyday tea.
  • In books: The Black Swan by Nassim Taleb, Walden by Thoreau, and The Four Hour Workweek by Tim Ferriss.
  • Git and GitHub.com
  • Tumblr (migrated from Wordpress Dec 11)
  • Dropbox. Never worry about losing anything again? I’m in.

Most importantly though, I have a better idea of what I’m living for than ever before. The happiest times in my life have always been the ones where I was living in greatest alignment with my principles, all else be damned. I’m almost back there. I also feel more capable in managing my day-to-day affairs and better at planning how to achieve what I want.

A giant thanks to all the awesome people in my life—you guys make me feel truly fortunate.

Tuesday, January 19, 2010 — Comments

Lifehacking, Expanded


(Photo: left-hand)

My friend Richard recently commented to me how curious it is that people alive today know little more about how to be human than the people who came before us. It’s an interesting point. Sure, we have an increased understanding of the physical world, but there’s no state-of-the-art for how to conduct our daily activities. Collectively, we don’t seem to be progressing on this most basic front.

Enter lifehacking. A lifehacker is someone who wishes to elevate his or her basic knowledge of human existence; someone who injects reason and efficiency tricks (“hacks”) into the humblest of everyday activities.

Originally the term had a strong technological flavor, coming from the shortcuts programmers created to automate tasks and manage daily affairs, but now it’s becoming more general. Technology is a useful tool in the lifehacker’s bag, but a great deal of lifehacking requires no more technology than a pen and paper, and some, even less.

The topics lifehacking addresses are often ignored for consideration precisely because of their humility. These things seem so simple that we assume there’s nothing left to solve and no revelations to uncover. Or we find the topics so commonplace that we don’t even notice their presence, despite being in everything we do.

The lifehack approach says that we should take the analytic machinery we apply to basic problem solving (or scientific research, in the more radical case), and turn it back on our own existence. It’s the idea that we should develop and leverage systems to manage the basic things in life—often thought too basic to systemize—like productivity, sleep, goal-setting, personal development, fun & fufillment, time management, learning, human relations, etc.

By systemizing these things we can hopefully advance the state-of-the-art (if only for ourselves!) and be better at the most basic and often most important elements of human existence. Which is truly more valuable: making faster computers or making more time in your life to do what you want? Yet how much more time and energy is devoted to the former?

Lifehacking isn’t complicated. It’s an attitude of experimentation coupled with an open mind. It’s asking questions about things people don’t ask about, and sometimes testing potential answers on yourself. But it does carry the implicit suggestion that we’re not doing things optimally, that there are shortcuts, and that we can exploit them if we have the dedication and willingness to try.

I feel that we’re living in an interesting time, where a lifehacking culture is developing, because as basic as most of the topics are, they apply to all of us. There have always been lifehackers (e.g. Leonardo da Vinci, experimenting with polyphasic sleep), but now there’s a growing number of people exploring life, becoming wiser about it, and sharing those discoveries with others.

Different people have vastly differing degrees of commitment to the lifehacker idea. Some may simply cherry-pick a hack or two to add to their life; perhaps an organization system or a mind-mapping methodology. Others get wrapped up in the concept of lifehacking, trying out various new ideas and becoming the originators of systems embraced by thousands.

There’s also a spectrum of generality, from the clever tricks of a particular field—which we might consider “hacks” more than “lifehacks”—to the most general of core lifehacks. I’ve leave you with some examples of these core lifehacks, techniques anyone could employ, to solidify the idea:

  • The mneumonic peg system, for memorizing any list of ten items in less than a minute, with random order recall. Here’s a great explanation and video by Tynan.
  • The tickler file, for tracking (and being reminded of) time-sensitive actions.
  • Speedreading, fairly self-explanatory. See Tim Ferris’ implementation.
  • Polyphasic sleep, the practice of sleeping multiple times per day (for less than 8 hours), exploiting the circadian rhythms to achieve more time awake each day.

The possible examples are innumerable, but that should be enough to give you the basic idea and starting building on the lifehacking concept.

Friday, January 15, 2010 — Comments

Live for the Stories


(Photo: nattu)

The only thing actually real is the now, and human lives are exceedingly short. One day we’ll look back on our past activities to see how we’ve lived our lives and garner if we’ve spent them well or ill. In that moment, all past life is compressed to nothing more than a narrative, the more interesting events reduced to chapters or mentions and the less interesting ones forgotten entirely.

That said, plan to write the best story you can. Plan to write a story you’ll be proud to look back on. Don’t think of the legacy you’ll leave for others—think of the legacy you’ll leave for yourself. If your life flashed before your eyes in impending doom, what would you remember? Would you remember anything at all? Some of us have pretty empty tales.

Use that test to determine if your life is full of empty pastimes and cheap thrills, or if you’re collecting memories that will fill a beloved treasury of adventures.

Consider yourself as the hero in your own story. Are you worthy of that title? What would your story’s hero do in the situation you are in? Shouldn’t you be doing that? You can’t expect to be in a hero’s scenario, but shouldn’t you be taking a hero’s actions? Following in a hero’s footsteps?

Don’t use this idea as an excuse to live in the past either—if you’re living in the past you’ve stopped making adventures, and why have fewer adventures when you can have more?

You only get one shot at this life. Don’t play it safe—be exceptional.

Friday, January 8, 2010 — Comments

How to Find the Motivation to do Big Things

A little over a month ago I released an iPhone application called Raconteur. And while It may not be especially groundbreaking, it was a hugely important for me because it’s one of the few things I’ve ever finished. On my own, with no external requirements, and no one driving me, I finished it.

Oh, I start things. I have 58 unpublished blog drafts (probably a dozen more on paper) and scores of projects in my version control repositories. I just don’t finish them.

Looking around in my life lately I keep seeing people who have great ideas but never seem to have the motivation to get them implemented. I know that I used to be one of those people too but I think I’ve finally broken away from the old ways. Here are my best tips for finding the motivation to do (and finish!) big things, many of which I leveraged while developing Raconteur.

  • Know what you are doing. Have what you are making clearly laid out before you, written down, drawn out, or mocked-up—something physical. Solidify the goal.
  • Know why you are doing what you are doing. Have a clear reason for the project. Write it down. With explanations if necessary. Write as if you were trying to convince someone else: when you hit the motivation slump you need to be able to look at this and convince yourself. As Seth Godin explains in The Dip, basically anything worth doing will have a tough period you’ll simply need to power through1. You need to have decided up-front, for sure, if this was worth working on, and have laid out your argument so that you won’t re-evaluate in this state where you are less likely to be honest with yourself2.
  • Take baby steps. If you’re working on something worth doing, there will be times when you’ll look at the enormity of the task and feel overwhelmed. Instead of remaining stagnant and stressing, ask yourself “what is the simplest thing I could do that would move me towards my goal?”, then do that thing. As Lao-Tze said, “The journey of a thousand miles begins with a single step.”
  • Embrace detours. If you’re like me, you find that day-to-day you don’t have the “psychic energy” to power through certain tasks, but others don’t seem too bad (David Allen talks about this). To make this style of productivity work, you need to know what steps you can take from here. Keep a quick (non-exhaustive) list of things you need to do soon so you can cherry-pick what you are up for. If almost nothing seems palatable, look for a research task you’ll eventually have to tackle before you’ll be able to deal with some future “real” work.
  • Accept some slack time. Down days happen. Sometimes you get sick. Sometimes you’re just not up for it. Accept it—don’t even be upset with yourself. Just try not to let two or three happen back-to-back and you’ll be OK.
  • Track your progress. Whether it’s a paper checklist or a Github page, you need something to show you how far you’ve come. If you can chart it, graph it, log it, or list it, you’ll know you’re getting there and you’ll realize that it is possible.
  • Leverage inspiration. Keep a list of things that inspire you. With Raconteur this was a list of iPhone apps that I felt were top notch; I’d fire them up, fiddle with them, explore the tiny little style touches and know that I wanted to make something that stylish, that well made. Maybe I didn’t get there, but it brought up the quality of my work. My RSS reader is often a source of writing inspiration for me. If you’re a visual person, consider a vision board.

Do you have any motivation tips to share?

Footnotes

  1. That doesn’t make the converse true! Everything hard is not necessarily worth doing.
  2. Unless, of course, new information comes to light.
Thursday, January 7, 2010 — Comments

Perfectionism: The Engineer's Bane


(Photo: Paul Mannix)

I’ve tried blogging many times, but my forays into online writing always grind to a halt. The explanation for this is partly psychological and partly technological: I latch onto minor dislikes I have with blogging tools/platforms and I can’t overcome them because of my perfectionist nature. I’d rather leave the blogging ‘problem’ unsolved than to solve it imperfectly.

I have serious difficulties with accepting 90% solutions to problems. I suspect this is a shared engineer trait. 90% solutions are so aggravating because they bring you close enough to perfection that you can nearly touch it—but you can’t quite. It’s like the occasional drop-out in that YouTube video you really wanted to watch that makes you turn the damn thing off completely.

The situation reminds me of roboticist Masahiro Mori’s essay The Uncanny Valley:

There are mathematical functions of the form y = f(x) for which the value of y increases (or decreases) continuously with the value of x. For example, as the effort x increases, income y increases, or as a car’s accelerator is pressed, the car moves faster. This kind of relationship is ubiquitous and easily understood. In fact, it covers most phenomena, so we might think that this function can represent all relations. That is why people are usually upset when faced with some phenomenon it cannot represent.

Climbing a mountain is an example of a function that does not increase continuously: a person’s altitude y does not always increase as the distance from the summit decreases owing to the intervening hills and valleys. I have noticed that, as robots appear more human-like, our sense of their familiarity increases until we come to a valley. I call this relation the “uncanny valley.”

The Uncanny Valley as it applies to robotics (or 3D animation) can actually be quite disturbing, resulting in human-like robots that seem more like zombies or even psychopaths because, (I surmise) the entities in question are similar enough to humans to trigger our brains’ mechanisms for detecting our fellow humans, but not perfect enough to be indistinguishable from actual humans. Our brains essentially detect an impostor.

For a perfectionist, happiness with a design can illustrate this same behavior; a better design makes us happier until it reaches a point (near to perfection) where the flaws in the design seem to stand out in an especially strong way.

Often 50% solutions are actually more desirable (and almost certainly more practically effective) due entirely to these psychological factors. I find that I can adopt a 50% solution thinking “this will work for now”, but I’ll drive myself crazy with a 90% solution I’d view as an imperfect permanent solution. With 50% solutions I’ve psychologically accepted the imperfection; with 90% I haven’t, yet it’s still there.

I’ll try to bring this to a more concrete level:

Until recently I had a storage closet jumble which would have driven me mad had it not had a door which hid its clutter, yet I never did much to permanently resolve the situation. You’d think that I’d take the time to deal with something which irritated me so, but fundamentally, I couldn’t solve the problem. If I needed to retrieve something from the disaster area I’d wade in, find it, and leave with a hefty sigh over the hopelessness of the situation.

The problem was that every time I saw the mess I looked at it as an engineer: it was a problem to be solved. What was the ideal solution? I could put this in one container and that in another, but there weren’t discernible, natural groupings. Which things should go together? They were unrelated! My engineering mind said, “the ideal solution hasn’t yet presented itself, but surely it will”. But it never did.

This is well-explained in the essay on Devizen entitled Programming Can Ruin Your Life:

Programmers become obsessed with perfection. This is why they are constantly talking about rewrites. They cannot resist optimum solutions. Perfection requires tossing aside mediocre ideas in search of great ones. A good programmer would rather leave a problem temporarily unsolved than solve it poorly. A good solution takes into account all predictable outcomes and solves the largest number of them in the most efficient way. This mindset prevents you from writing code with limited utility and life span. While it’s a wonderful trait to have in programming, the demons of scope and efficiency will start to assert themselves on your ordinary life. You will avoid taking care of simple things because the solution is inelegant or simply feels wrong. Time to think will no doubt yield a better result, you’ll say.

Unable to find an ideal solution, I put the project aside and waited for one, until eventually, when the need for space reclamation arose, I stumbled upon the incredibly obvious 50% solution of moving the entire disaster out of my apartment. I’ve been satisfied ever since.

This sounds like the nit-picky, pointless tale of one man’s inability to wrangle his rubbish, but I assure you it’s much more. It’s the tale of a man who has missed important meetings because he can’t find a calendaring application which satisfies his requirements. It’s the story of a dozen stillborn projects.

It’s the face that would have launched a thousand ships but couldn’t find optimal material to make sails from. And for people with this personality trait, it really does matter.

Perfectionism has its charms. Certainly it’s the reason many things are so very good. But if we’re not producing anything because of it, we need to listen to Voltaire’s advice and remember that sometimes, “The perfect is the enemy of the good.”1

When perfectionism has us held hostage, what can we do? Here are three strategies:

“Escape by Design”

I’ve borrowed this title from The Uncanny Valley:

We hope to design robots or prosthetic hands that will not fall into the uncanny valley. So I recommend designers take the first peak as the goal in building robots rather than the second. Although the second peak is higher, there is a far greater risk of falling into the uncanny valley. We predict that it is possible to produce a safe familiarity by a nonhumanlike design. So designers please consider this point. A good example is glasses. Glasses do not resemble the real eyeball, but this design is adequate and can make the eyes more charming. So we should follow this principle when we design prosthetic eyes.

Masahiro Mori is talking about making robots that don’t attempt to look human so that they don’t fall short of looking identical to humans; robots that look like (say) cartoon characters don’t trigger our innate disgust for the flawed (for a deeper treatment of the uncanny valley problem, go here).

In other words, do more by doing less. Accept the “50% solution” as passable with the knowledge (personal or even public) that it isn’t your best work, or wasn’t quite up to your original intention but is still an accomplishment.

Release Iteratively

If you have the luxury of working in a field like (much of) software or web content, release iteratively. Release small, perfected nuggets and build on them later. Don’t ship broken features or immature content, just ship less content and work your way up to the masterpiece.

Make Hard Commitments

Real artists ship, so make big, firm promises to ship the product and stick to them (I’ve done this recently with Raconteur, promising my users an important update before Christmas).

From the 37signals book:

Here’s an easy way to launch on time and on budget: keep them fixed. Never throw more time or money at a problem, just scale back the scope.

This might cause you to release something imperfect (which might even be good for you), or it might just give you the motivation to power through to perfection.

Discussion

Are you held hostage by perfectionism? You know who you are. Can you share any additional tips on freeing yourself from its clutches?

Footnotes

  1. The original quote in French is “Le mieux est l’ennemi du bien.”, from Voltaire’s Dictionnaire Philosophique (1764).
Thursday, December 17, 2009 — Comments

iPhone SDK: Yay, In-Application Preferences

There are lots of nice resources (both printed and online) regarding the use of the Settings.bundle to store the user’s preferences on the iPhone, but there seems to be a severe lack of resources about not using it.

Settings.bundle is admittedly pretty cool. With a single .plist file you can create a settings management page in your application that covers a number of common requirements. But besides the obvious UI concern of storing your application’s preferences in a location many of your users will never check, the bigger problem is one of limitations; if the Settings.bundle does what you need, great. If it doesn’t, get the hell out—you can’t put any custom code into the Settings app.

Need to make a query to determine the options for a setting? Not happening. Multi-line text entry? Sorry.

With Raconteur I happily used Settings.bundle in version 1.0 and then hit a brick wall when adding password protection because there’s no way to do password confirmation in the Settings app. And surely I’m not going to leave my application’s settings arbitrarily (from a user’s perspective) split between inside and outside the application, so I have to backtrack and move everything in.

My advice for developers starting on new applications is don’t use Settings.bundle. Unless you know all of your requirements upfront and they couldn’t possibly change (and if you do, I’d like to visit your mythical waterfall). On the whole, it’s exceedingly anti-agile to hit a brick wall and have to redo work. Not to mention breaking user expectations for everyone who had already found the external settings.

Now, if you’re not using the Settings.bundle mechanism, how do you store your user’s preferences? I imagine this is exceeding obvious to experienced Cocoa programmers, but to developers starting with the iPhone, the docs aren’t so clear… the NSUserDefaults mechanism works the same whether you are using Settings.bundle or not. Just grab the defaults object, register some default defaults (…), and start using them:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
                            @"Cheesy Ramen", @"favoriteFood",
                            @"YES", @"donateToHungryPandas",
                            nil]];

Note that this registerDefaults call is important whether you use Settings.bundle or not. You might be shocked (I know I was) to find that your application’s settings (and associated defaults) from your Settings.bundle might not be programmatically available until the user runs the Settings app. Which means that you probably set the defaults once in the Settings.bundle and now you get to set them again in code. I know, lame.

Access your settings like so:

if ([[defaults objectForKey:@"favoriteFood"] isEqualToString:@"Cheesy Ramen"]) {
    // Screw cheesy ramen...
    [defaults setObject:@"Pizza" forKey:@"favoriteFood"];
}

A few more tips:

  • Definitely consider defining some constants for your preference keys so that the compiler can find your typos instead of your users finding them.
  • Since NSUserDefaults acts like an NSMutableDictionary, it only stores objects (not your bools, ints, etc.). Fortunately it provides nice convenience methods like boolForKey: and setBool:forKey: to abstract away conversions to object types (like boolean YES to @"YES").
  • You can use both Settings.bundle and your own interface to access the exact same preference data with no problems (makes sense but I’m just pointing it out). That said, it probably doesn’t make a great deal of sense from a UI perspective.
  • NSUserDefaults is automagically saved off at regular intervals (and, I think, when you exit the application). You don’t have to worry about saving those preferences, or about exactly where they go. That’s why it’s automagic.
  • Once you remove Settings.bundle from the program, it may still appear to be around, showing up in the Settings app. In reality it won’t hang around on your users’ devices (I believe), but to remove it from your test devices, simply make sure to run Build > Clean All Targets in Xcode.
Friday, December 11, 2009 — Comments

If you like my posts, the biggest thank-you you could give me would be take a look at the iPhone app I wrote called Raconteur, over at Too Much Tea. I'd love to hear what you think!