Viewing Category: Tricks
This has been a great week. It kicked off with surprise tickets to a real basketball game in Boston (Celtics versus Sonics), which was super fun and enlightening. Watching a game at court-level is a completely different experience from TV; you really get a sense of the speed, precision and adaptability of the players. A little of that energy rubbed off on me for the rest of the week, as I humped it through project work, had great client meetings, and fulfilled some long-standing personal engagements. I got an extra boost on Tuesday, when I got my every-six-week haircut at what is now my favorite place in Danvers; afterwards I went to the mall and got great service from the female store staffers. I realized that they were admiring my haircut as I followed their eyes. And if that wasn't enough, I lost five pounds this week without even thinking about it. It's been a very productive week on many levels.
Today, however, I realized that there's possibly another level of productivity I could attain, after talking with a friend about personal identity.
Buddy S. was cheerfully filling me in on the positive psychology reading she's been doing. One neat tidbit was how people see themselves as having a job, a career, or a calling: people with jobs do it for the money, people with careers do it to climb the ladder to higher levels, and people with callings do it for the love of it despite money. I commented that I thought I was somewhere between career and calling. I was silent as I reflected on how I seem to be searching for personal meaning in the work that I do, and that perhaps this was a source of inefficiency.
On a whim I asked S. if she had a strong sense of identity, as she's a very productive person. "Yes!" she said immediately, and proceeded to rattle off half-a-dozen things. "Wow!" I exclaimed, impressed by the speed and surety of her answer, "I'm not even sure I could do that."
"Sure you could! Maybe it's not voice that works for you, but I know if you sat for 3 minutes you could bang something out."
And certainly I could, but the ability to just say who you are on a moment's notice was really intriguing. So I tried it, muttering something like:
I'm David Seah, and I like cats (note: Kat was sitting right there, looking at me expectantly). I like nutty quirky people, and people who are inspiring and like to make things. I like things that have artisan or craftsmanship like quality. I like to find the essence of things.
Ok, we knew that already, but the interesting part is this: the exercise made me realize that I had a huge desire to collect and organize the statements I was in the process of saying, and this caused a delay in speaking. Ordinarily, I would have taken the time to do some internal organization before saying what was on my mind, but since time was a factor, I consciously overrode that desire so I could speak more immediately. I think being able to speak extemporaneously like this is a valuable skill, so I'm going to practice it more to get used to the idea.
Later on, I began to wonder if this "processing delay" is introduced by some kind of computational overhead in my thinking process. If that's the case, then I should be able to turn it off for faster reaction time.
The thought-to-action model might be something like this:
- Brain conceives of high-level Goal to pursue
- Brain partially converts goal into series of steps to be done
- Brain analyzes steps for completeness to create optimal execution plan
- Brain executes optimal execution plan by dispatching commands to the Body
- Cool shit happens
A cognitive scientist might help me out here :-)
Anyway, I'm thinking that Step 3 is the culprit: it creates a transactional model for action that requires optimal planning---and by extension, all necessary assets ready and available---before any execution will occur. Planning itself is not a bad thing, because it saves later headaches and ensure that energy is used in the most productive and optimal fashion. And isn't being optimal in our use of resources productive? Efficiency is awesome, yes?
Up until 10 minutes ago I would have agreed, but I now believe this is a case of premature optimization. Optimization itself is always desirable in an end product, but performing it before you fully understand where the bottlenecks are is a recipe for wasting time and energy. In the real world, it's like arguing what the best way to do something is before anyone on the team has really done it; at some point, you have to try something and see what happens. Trying to be efficient before you have real experience just slows you down for no reason. In real-life work, it makes sense to just learn by doing, and make incremental improvements in the process as you gain experience with it. Make your best guesses based on what you do know, but don't encumber the process with "it will be more efficient if we do it this way" conditions. Instead, focus only on the "it will work" conditions.
As programmers, we're taught to value efficiency, and oftentimes that includes productive laziness: how to get the maximum benefit from minimum effort. A lifetime of programming experience teaches us where the high-payoff situations are likely to be, and this makes us seem like magicians when we pull off something particularly elegant. Experienced programmers know that these moments are relatively rare in the day-to-day work of building software: you either know a trick right off-the-bat or you see the opportunity in the course of experiencing the system as it's coming together. But what makes steady progress possible is the commitment to building the system brick-by-brick, knowing that each piece will function in a reliable manner. After you get the system built, then you can do some productive optimization work.
Tying this back to procrastination:
The processing delay I noted in the "who am I" statement was an echo of a "work optimally" desire, before I knew what I was going to say. If I was building a software system, I would just build something and find the answers in the process of building, not worry if it was "optimal" or "efficient". It just has to work first! And perhaps this attitude is what I need to cultivate in my approach to all my projects. In other words, Do It Now, Optimize Later and Learn By Doing.
This may not help for chores like doing laundry or taking out the trash, but it might help get some of my other projects moving.
So I'm at Barnes and Noble Cafe catching up with Scott, and I'm telling him about The Printable CEO. He laughs at the name, commenting on how it has an interesting "accessible to the people" quality to it.
"So how did you come up with the idea anyway, Dave?"
I paused in mid slurp. It had taken just a few hours to put together, but what had triggered the act of creation?
"Hmm. I guess it started about two years ago..."
The Printable CEO was born out of a very specific strategic need: I needed to create more tangible assets--that is, stuff that you could actually see with your eyes. And that was driven by a single horrible truth: I am a terrible networker. I went to one or two networking events when I was getting started, and tended to have conversations like this:
"So, Dave is it? Your name tag says you're a New Muddy Designer?"
"No, New MEDIA...it's designing the graphics and interactivity for computer screens--"
"Oh, how rustic! My son--he's 6 and extremely computer savvy for his age--likes to do that too with 'KiddyPaint'...have you seen this program? It's AMAZING. I am the distract sales manager for BigCom, specializing in ERP and CRM solutions for the Fortune 100. Oh look, there's Matherson from the Chicago office!"
"ERP-?"
"Excuse me, my drink has become warm...Matherson, wait up you old dog!"
I'd rather avoid this kind of superficial interaction; with tangible assets, I can "show" rather than "explain". Looking at it another way, attracting people to me rather than me approaching them is an easier sell.
Whipping Up Some Goals
I should step back and describe the general goals I've cobbled together over the past several years, because that's the primordial context in which The Printable CEO sprang.
I want to do projects that I find personally interesting and relevant, with people who I respect. I'm willing to choose the less lucrative interesting project, believing if I do the kind of work I enjoy, success will come.
I want to be recognized for the work I do as an individual. It's just the way I'm wired...I don't feel any accomplishment when I'm a small part of a large successful team. For a long time I mistook this feeling to mean I didn't want to work in teams ever again. THAT was a huge mistake, because it turns out working with the right people is a lot of fun. It just took a while for me to experience it.
I want to collaborate with other passionate, conscientious, creative, competent people. When you find the right people to work with, it's incredibly energizing and fun. Great things start to happen! And it feels great.
I want to create great products that also work for me. A lot of what a freelancer does is services, not product development. Services can be cool when you're collaborating with awesome people, but career-wise you're still in the rat race, always looking for that next job. Wouldn't it be great if you could build something that made money for you as you slept? So really, I want to transition from freelance to becoming an independent practitioner. To me, that means having a real product instead of a menu of services.
Overall, I want to be happy, and feel a sense of creative kinship with people. This is a lot more personal, and it means I've finally come to recognize that without this, everything else means nothing. Freelance is the vehicle I've chosen to get me there, so I have to make that work.
These goals are pretty ambiguous, but they describe a state of existence that I want to achieve. A real business person would go further and define the genetics of a successful business organism that, as a byproduct of being alive, meets those goals naturally: that's what a business plan is! At this point in the game, I'm not ready to do that, so I am just sticking with "follow my bliss" as the direction. I figure that this is at least is getting me in the vicinity of future opportunities. If I have enough to eat and a place to sleep, and I'm getting closer, then life is good. Is it any wonder that I like freelancing? Careerwise, I'm doing On the Road-Lite .
Strategy and Tactics
The Printable CEO is not so much about strategy as it is tactics. In other words, the PCEO is a tool to help implement the plan that will bring about my goals. I picture three elements of any successful multi-step action: Goals (which I outlined in the previous section), Strategy, and Tactics.
GOALS are what I want to BECOME, where I want to BE, what I want to HAVE. Because I ain't there now and that sucks.
STRATEGY is the plan that gets me from where I am now (you know, in sucksville) to the place/condition/state of grace visualized in my GOALS. A good strategic plan is one that is designed to succeed given the prevailing situation and favorable conditions. Here's an example of a good strategic plan tied to a specific goal:
GOAL: I want to be outside tomorrow, because being outside feels good.
STRATEGY: The door leads outside. By opening the door and passing through it, our goal will be achieved.
I didn't say it was a sophisticated plan...just one that isn't likely to fail barring some kind of catastrophe. It's even a great plan if the weather has been good and you're in good physical condition. There's still plenty that can go wrong, but let's not dwell on that. That's where tactics comes in.
TACTICS is the art of getting things done: execution! I have the tools, the skills, and the ability, so I should just do it. The "art" is getting past the obstacles with style: through creative thinking, reframing of the problem, goal substitution, whatever...what Bobby Shaftoe (from Neil Stephenson's Cryptonomicron) calls adaptability.
The Tactics of Following Your Bliss
So what is the Printable CEO? It's kind of a tactical trick in two parts: a carefully-defined list of tasks that carry out my strategy without having to think about them too hard, and a positive motivation reward system that's easy to read.
Here's the strategy:
Success, defined by maximally achieving the state of existence as defined in my general goals, will come from having tangible work to share and to show. A tangible work in my context is (1) a screen design (2) an interactive (3) a piece of writing (4) a piece of working software.
By having more tangible work, I then have more ways to appeal to the pool of interesting people who are hiring or are looking for collaborators. This is why I emphasize showing...you can't attract people if there's nothing to see.
To maximize exposure, I will share broadly. My web site is up 24 hours a day, sharing while I sleep. Sharing helps establish a connection through a proxy object, which for my personality is a lot easier than trying to work a cold room full of suits. Maximized exposure of showable artifacts and ideas increase the chance, again, of landing interesting work with interesting people who are on my wavelength.
The items in the list are picked to be as concrete as possible, either as an action or as a deliverable. They all feed into that strategy on some level.
I think the more quanty MBA types would chastise me, saying "HOPE is not a PLAN". However, I think this is a pretty good LIFE PLAN that happens to have financial residuals. When I come across an opportunity to define a real business plan, that's when I'll do it. That's the way my priorities are set up at the moment.
The second part of the trick is the motivational psychology behind the bubble chart. Repeat after me:
The Printable CEO is not a To-Do list. It's an I-Did list.
A To-Do list implicitly says, "You need to do ALL these things, otherwise you are failing." It is a completionist, perfectionist-feeding tool. Personally, I think that creates an environment with more opportunity for failure, especially if you are a procrastinator/perfectionist like me. Why feed that? I believe that there is a certain amount of self-disciplining you need to do, but sometimes it's easier to just remove the temptation.
Here's an example of To-Do list thinking. Imagine that the To-Do list is talking to you:
There are 4 ounces of chocolate divided into 18 discrete pieces. Each discrete piece will be accounted for and checked off.
Here's how I imagine the Printable CEO talking:
Hey, you have 18 M&Ms! That's AWESOME! Rock on!
Do you see the difference? It's just a reframing of the task, an adaptation to my particular set of personality quirks. I've spent years trying to use the To Do list as a motivational device, but for me they work far better in the "TO DO RIGHT NOW or DIE" context. I am not disciplined enough to use them as an actual motivational device for business development. Because I tend to see work and life as the same thing, I need to have the business development activity be fun and rewarding. The To-Do list just turns into a To-Didn't list, which encourages a "slip instead of ship" mentality, and that is totally lame. Why bring myself down? That's a strategy that, in my case, is not designed to succeed.
So when you're putting together your own list of tasks, think of the following:
Have a task list that's tied to the strategic goals, and trust that great things are built from many small steps. Make the steps small, doable, and supportive of your strategy.
Frame measurement of progress in a way that doesn't encourage perfectionism and completionist thinking. Equate filling out a bubble with found money. We like found money!
If you've picked the right tasks, the completion of every one them should be a positive step toward achieving your goals. In my case, most of those tasks contributes to managing relationships that lead to new contracts, or tangible assets that attract new relationships. You may have different priorities, such as research or gaining experience. Just make sure that you can show or share what you've done. I find mere description and exposition is far less compelling.
You Still Here?
You may have noticed that what I've discussed to now doesn't cover all 10 criteria on the list:

The 5-pointers were the original items on my list, before I even thought of the bubble chart. The odd-man out is the "accounting and planning" item...this is something I should be doing more rigorously.
The two 10-pointers came next, because without revenue you DIE. That's the MOST important thing to think about: survival. If you're going into debt, you're not helping yourself. Make the money you need FIRST, build a buffer, then you have the luxury of picking projects toward a better future.
The 2-pointers are related to activities that lead up to signing new business. If you've ever worked on closing a deal, you know it can take months of small interactions that finally lead up to big handshake. As it is, I have already gotten the ball moving here and am doing it daily, so I don't need to emphasize it as much. Remember, the point values are not a reflection of how important it is; it's how much motivation you need. Assign the higher points to the tasks that you know you should be doing more. If you're already doing them, you can assign lower point values to them.
The original list didn't have 1-pointers...it had 0 pointers. It used to say, "If it's not on the list, it doesn't count! Do something that does!", and I had a bunch of 0-point bubbles to fill out to see how much time I was wasting. I nuked that because I actually then thought about how important maintaining and making relationships were, and didn't want to just add another group of bubbles--4 groups of anything is about the maximum "this is not scary" size, from a visual design perspective. As a bonus, I realized that this made the form more positive overall. Because I have an engineering background I have the tendency to think that everything must have a "worst case scenario" aspect, which leads to a lot of needless caveating and disclaiming up.It just sucks the momentum out of things, which is counter to the mission of the Printable CEO. When it's time, I'll create "The Printable COO" to handle that part of the business :-)
From a graphic design perspective, there are also a lot of interesting little touches. Not amazing, just interesting: the psychology behind the specific point values, point spread, and colors, the number of groups, the challenge of grouping, the repetition of shape and form and proportion, relative sizes of elements. Nothing that a graphic designer doesn't already know, but it might be interesting to write about that next; after all, blog articles are worth 2 points in my system! :-)
I almost never do touristy things. When I lived near Orlando, Florida, I didn't go to Disneyworld once. But my cousin is in-town and we wanted to see uniquely East Coast things, so we did a day in Boston and Salem. I wasn't sure if I was going to have fun, but what doesn't kill ya...
I wish I'd done this before. It was very enlightening to experience two different tourist-based businesses; it's given me some insight in the mentality I need to have to generate recurring income.
We went to the Salem Witch Museum. I wasn't sure what to expect for our $12 bucks/person, as there were different "showings" every half hour and you couldn't see what was going on. We booked our spot and waited in the chintzy gift shop until it was time. When the moment of reckoning burst upon us, we were ushered into a large, dark room with a glowing red circle in it. The guide suggested we gather around the circle, but everyone opted to sit on the benches. One little girl got scared and left. When we were all settled, the guide welcomed us and then...left the room! She said something like "enjoy the show!" on the way out. My mind was already appending the word suckers when the show began.
An audio tape started to play, and a somewhat Vincent Price-ish voice began setting the tone for the story: The Witch Hysteria of 1692. The room, about the size of a small barn, was basically a kind of diorama; each wall had several life-sized scenes with mannikins depicting the story of how a bunch of little girls got 19 people hanged (and one was pressed to death). The sets, though only somewhat lifelike, were nicely lit by hidden lights that faded in and out in time to the soundtrack. ; I'm guessing it was controlled by some kind of ancient audio-tape control system. I couldn't help but think that this kind of presentation was very old...maybe this is what got Uncle Walt so hooked onto audio-animatronics? Multimedia before the dawn of computers!
After about 30 minutes, we were released into the second exhibit by a second tour guide, who walked us through the Witches: Perceptions portion of our visit. There were three main set pieces that showed different perceptions of witches, from the pre-Christian "Midwife" to "Green Skinned Devil Worshipper" to "Modern Wiccan". The tour guide could press a button on the wall that played an audio track that spoke from the witch's point of view.
I was not-quite disappointed by the whole experience. I later found out that this museum has remained essentially unchanged since the 70s. The takeaway: Some people built a big theatrically-lit diarama, wrote about 30 minutes of script, hired a few voice actors, synch'ed the up to a light and tape show, and have been charging people 12 bucks per head for the last 30 years. AND THEY HAVE GOTTEN AWAY WITH IT! My mind...reeling!
After the Witch Museum, we took a night walking tour of Salem with Hocus Pocus, an independent tour guide company. We had passed by their booth before, and I had been impressed by the front man's friendly and non-intrusive pitch. His pleasant demeanor made me think that the tour itself would actually be pretty good...he seemed seemed invested in the business, and wasn't just some flunky making beer money for the night. Anyway, for our 12 bucks, we got a 90 minute evening walking tour with about 25 other people, lead by a tall red-haired woman in a long black dress. It was quite enjoyable to walk the town, taking in the sights and listening to the stories. By the end of it, I felt I knew the town and its history better though I already been here several times before. My 12 bucks had been well spent.
This got me to thinking...
The tour guide had her original copyrighted program and a route (no videotaping allowed!).
She had delivered a good product that didn't require any capital or fixed location except for a tiny portable booth, albeit in a good location near the Peabody Essex Museum.
On the money side, they run both nighttime and daytime tours nearly every day of the year. Say they run 50 people a day at 12 bucks a head...for 2-3 people, that's not a bad income to do something that they clearly love and care about.
And so...I am wondering how I can make this happen for me. I have been thinking that getting out of services is the way to go, but until now I really didn't have a close-up look at how other people had done it outside of software. This is content generation at its most basic: people packaging and sharing their knowledge at a market-conscious price point**.
Is New Media so complicated that this approach would not work? Is the key element having a clear definition of what you are making instead of what you are doing?
Jason forwarded me this article reviewing SWF Encrypt, a $99 Flash SWF encryption tool that, so far, is able to defeat those SWF decompilers that can be used to rip off your code by reverse-engineering the bytecode (the SWF file) into readable source code. This is also useful for trying to find interesting tidbits like database server passwords, if you've happened to hardcode it into your SWF.
I was talking to my buddy Alen tonight, mentioning that I think I need an editor to give me some focus on a series of articles I'm planning on writing on New Media or development. The conversation went something like this:
"I've figured out that I need to have someone ask me a question, then I seem to be able to write", I said. "Like when you ask me some question like what hard drive to buy, I send you a feckin' book. But if I'm just in a vacuum by myself...nothing!"
"Well yeah", observed Alen. "That's a trick they teach you in Art School. Like when you come up with some theme like The Circle of Life. and yeah ok, it's all arty and good. Then you paint it and it just sucks for some reason. But then you think of it as a gift for someone...and you paint it for your Mom and everything's cool."
I sort of gape at this, because it seems so obvious and I've heard it before: Don't just write...write for someone. I've thought about audience in general terms, but not a specific person and all that entails. Could it be that simple?
I just discovered the reason why my notebook computer isn't playing nice with certain ASP applications: I had apparently, in a fit of moral outrage over how Internet Explorer pretends to be Mozilla in its user agent string, changed that string to something else.
A little background: The user-agent string is a bit of info that your browser sends back to a webserver to identify its "model". Since every browser is a little different, web pages are sometimes coded to detect which "make and model" is being used, adjusting what is displayed accordingly. Internet Explorer did this to be compatible with then-king of the hill Netscape Navigator. After Navigator was firmly crushed, IE continued to masquerade itself using the Mozilla monicker, a grisly trophy of the Great Browser War. The doppleganger prevailed, assuming the identity of the original!
That just didn't seem right, so I changed the name of the browser from "Mozilla/4.0" to "IE6" in the user-agent string using some arcane methodology I have since forgotten. Another injustice righted! Another ghost laid to rest!
But then the haunting began...
The ASP application in question is Showing Evidence, a web application I developed with the guys at [Inquirium][inq]. We did the Flash part, and Intel's web team built all the ASP and back-end infrastructure to support it. However, the demo breaks on my notebook, but works on my desktop. And both machines are running the same version of XP and IE6, right down to the service pack. Argh!
But this morning, I was contemplating the difficulties I had submitting this blog to the 9rules network due to some browser issue, and it came to me: duh, Intel's browser detection code might be getting a different user-agent string from one of the computers. So I checked, and It Was As I Thought.
I changed the string back using the registry-editing instructions at the bottom of Eric Giguere's tool page, and now everything works.
So that's the story of how a long-forgotten act of zealotry came back to bite me on the ass. The moral? Um...I'll get back to you on that.
When you have several computers running all at once, you end up with a desk cluttered with multiple mice and keyboards. Invariably, you're going to grab the wrong mouse or type on the wrong keyboard. Annoying. So short of building a custom multi-keyboard stack rig, or suffering from the inelegance of a KVM switch, you can use Win2VNC to control two computers from one mouse and keyboard. I have a Windows and Mac on my desktop, and I can smoothly move my mouse cursor from one machine to the other. It's magic!
Win2VNC is a modification of a regular VNC client, which normally is used to control computers that you can't necessarily see. To do that, it copies the contents of the screen of the remote computer to your screen; if you've used Window's Remote Desktop capability, it's the same idea. Win2VNC just does away with the screen copying (it's not needed, since you have the other computer right in front of you), and adds code to seamlessly track the mouse as it enters/exits different screens.
It mostly works...you have to remember that the ALT key maps to the COMMAND key on the Macintosh, and that copy/paste is therefore ALT-C/ALT-P instead of CTRL-C/CTRL-P. You also need to run a VNC Server on the remote machine; for the Mac I'm using OSXvnc under Mac OS X 10.4.1 Tiger. There's a small bug in it in which you have to write-protect the app to prevent it from corrupting itself (cd /Applications; chmod -R 555 osxvnc.app or something similar). And sometimes copy/paste breaks...it may be related to this apparent bug with the Mac VNC Server.
Still, it rocks. If you used the KVM switch solution, you would have to press a button to switch from one computer to the other. With Win2VNC, you just move the mouse cursor off one monitor, and it appears on the other. It's more much natural.
UPDATE: I just read about a commercial product called Multiplicity from StarDock Software. The professional version can manage more than two computers, which would rock. At the time of this writing (11/30/05) there is no Mac OS X client, though one is in development
Hooray for me! I get to look at Unicode today, as part of a second internationalization phase for Showing Evidence, an upcoming part of the Intel Thinking Tools suite. We have to modify our test server to localize some of the last few hard-coded strings in the application.
Although Intel's server isn't written in PHP, our test server is, so now I get to learn how to work with Unicode in that environment. Ben pointed out that PHP doesn't, um, actually know how to deal with Unicode, so this article by Scott Reynen is going to come in handy. I will need to re-read Joel Spolsky's "if you are a programmer working in 2003 and you don't know the basics of characters, character sets, encodings, and Unicode, and I catch you..." article on the basics. Entertaining, and informative!
Scott Reynen's weblog is pretty cool too...I like his writing style a lot.
One more thing: my opening "hooray" was originally intended sarcastically, though with these two useful articles I am actually looking forward to it.

I believe in trying to display adaptable and flexible thinking, and one of my favorite examples of this is Calvinball, a game from Bill Watterson's famed strip Calvin and Hobbes. The primary rule of Calvinball, as far as I'm concerned, is:
1.2. Any player may declare a new rule at any point in the game (Figure 1.2). The player may do this audibly or silently depending on what zone (Refer to Rule 1.5) the player is in.
A lot of Calvinball is probably pretty close to business in general. Keep it real, guys! :-)
On the MMBug Mailing List, there was mention of a couple of good dropdown menu sources that work on every browser. Here's where it pays to buy software from someone who's specialized in a very convoluted field: browser compatibility for tricky DHTML programming. I'm making this entry so I don't forget, because this is a pretty common thing to need.
Ultimate Dropdown Menu from Brothercake. I like his site, and he's a good example of a niche software guy that I would do well to emulate: know your stuff, be good at what you do, provide an accessible product, and present yourself well.
Milonic, which I looked into a while ago and ultimately didn't use.
Coolmenus, which was what I used for one project once, but doesn't seem to be actively updated any longer. The site is really slow too (I know, I'm one to talk).