Icon of Trevor

Trevor F. Smith: Exterior

Subtitle: A public record of my projects and related works.
Keywords: Bit Henge Favorites Fingernail Clippings Ogoglio Transmutable
Streams: trevor.smith.name twitter reader linkmonger flickr
Search:

Transmutable Postmortem

Now that I have the perspective of a little time away from being a freshman CEO, I'd like to record a few thoughts about my time at the helm. You can read the nitty gritty details in the company and personal blogs so I'll forgo a history and just dive into what lessons I learned.

Though I did (and still do) a fair amount of talking and reading about how to manage startups, I made a lot of the typical production-manager-turned-CEO mistakes:

I didn't reach out to local startup and funding communities. I have a network of startup folks in the bay area so even though I live in Seattle I didn't make time to attend local startup events. While this did save a huge amount of time, I didn't get to know the people nearby who can help out with non-core competencies (see below) and it also left me without local sounding boards when it came time to decide between going for investors or shutting down. I also worked out of my home office for most of the life of the company, but I should have started by renting space in one of the coworking offices downtown. I've heard that isolation kills more companies than red ink and I can believe it.

I bit off too much technology for our tiny bootstrap budget. I think we were onto something with our platform, but I was pretty aggressive in terms of thinking about scalability and the future of the cloud. We built on the (at the time) raw Amazon EC2 cloud, we were pushing the idea of 3D simulation on the web, and I believed that we could wrangle applets into not sucking. Even though I was very careful about scope and our focus on product, I underestimated the time it would take to get to a V1 and then inject it into the market.

I picked the wrong community of peers. I formulated the main ideas for the company while taking part in the game-centric virtual world community, so that is who I talked with the most. There are some brilliant folks in that crowd so it was stimulating, but in the end I spent a lot of time in groups of people who didn't believe that the web was about to consume 3D spaces like it consumed text, audio, and video. We were a web centric company so what I should have done was put out django-sim as quickly as possible and then rally forward thinking web developers around that flag.

I didn't outsource non-core competencies. This was partly fallout from the funding error I mentioned above because there just wasn't room in the budget to pay someone to make our product look like anything other than a developer driven prototype. Combine that with our "build it and they will come" mentality (a typical engineers' outlook) and the result was clearly not up to my personal or professional standards and had very little marketing push to get it in front of our target customers.

I worked myself too hard. I worked long hours and when I wasn't working I was thinking about working. I got divorced and shut down the company in the same quarter. This is not a coincidence. As news spread about this I had many interesting conversations with other divorced startup folks and it's clear that many of those startup heroes sleeping under their desks are there to avoid their home life as much as to help the company.

We had an unusual legal structure. There were good reasons for each decision about our legal and IP structure, but when talking with someone about investment you really don't want to be a scrappy LLC making open source platforms and creative commons licensed art which underpins your relatively small layer of proprietary product. Right or wrong, it's a red flag to many investors.

Luckily, not all of the lessons I learned are based in pain: I hired very carefully and the people I worked with were unbelievably excellent. Bootstrapping has a place in the pantheon of funding strategies, and I better understand which sorts of business model it can support and what a engaging business culture it can create. I fought against the usual communication firewall between my customers and my team and it more than paid for itself in understanding and community support.

It's hard to see these lessons recorded in black and white and they're a lot easier to identify in retrospect than in situ, but I think it's important to get them into the memepool for me to remember and others to read. Also, the folks in my next startup can now linkslap me if I start to make these mistakes again.

Change is the Only Constant

This past ten days has been a sharp, short shock to my system. Despite our best efforts, my wife and I have come to the conclusion that our marriage has come to its conclusion so we're switching to a binary household with my daughter and I staying in our house in West Seattle.

The life of a startup CEO is not conducive to that sort of arrangement (see previous references to travel and risk) so my time at the helm of Transmutable has come to an end. Cofounders Ian and Nicolas are considering a variety of directions for the company, and I have every confidence that they'll choose the best path forward.

As for me, I'm looking for a company in need of an experienced, results-oriented software engineer and technical leader with a history of shipping innovative, high quality software. If that's your company, I can be reached via my linkedin profile or via email at trevor at trevor dot smith dot name.

Flickr ships geotagging

I must admit that the high quality of Flickr's new geotagging features have absolved me of any guilt I felt about not rewriting 93 Photo Street as a web application. Good show, Flickr!

I called it Transmutable for a reason

I am in the process of rehydrating Transmutable as a Washington based company which will serve as the commercial projection of my work into the noosphere. My first contract as an independent maker-of-things is for an old friend who is finishing off an old project which will put to rest his very old PhD thesis.

It's true, I'm not falling far from the tree for this first contract, but it warms my heart to work with that crazy crew again. As a bonus, this time I'm working from afar so I won't have to put up with strange looks when I french kiss my cinema display for showing me the green bar (of love).

When that contract is complete I'll be swapping some old ideas off of the back burner and cooking with gas, if you will forgive my metaphor mashup.

Toolchains

Most technologists assemble a set of tools which they use to create their goods, and I'm no different. Here is my current toolbox:

Servers:
My public web sites run on a virtual personal server running the apache web server on FreeBSD, which is maintained by my awesome friend, Tim. For the various little java web services I litter around my home and office, I used to use Tomcat but have recently switched to Jetty since it is lighter and I have a bare bones configuration which takes about 10 seconds to make into a new app.

I also ssh in and run OSXvnc and ultraVNC on various boxen for those rare times when the command line won't do.

At work we have a nice mix of linux beige boxes and solaris rack mounts which do a variety of serving, including our CVS and SVN source trees as well as your basic NFS and SMB shares.

I use .Mac mail because at some point I realized I had configured one too many sendmail installations and I've never once had to think about pointing Mail.app at my .Mac account.

Workstations:
A few years ago I switched from a dual-boot linux/WinXP thinkpad to OS X on a Powerbook, which I manage with Fink and FinkCommander. When I'm at work I usually have a few network drives mounted and browsed via Finder. When I need a WinXP box I use one of the common lab machines with Cygwin to make it more palatable.

Workstation apps:
When I'm designing web UI, I use HyperEdit to construct and then check the results in Safari, Firefox, and WinIE (usually within a VirtualPC hosted WinXP installation). For Java and the occasional C++, I recently switched to Eclipse because CodeGuide went and turned into XCode, which looks as bloated as Eclipse and isn't free. When coding, I usually have roughly 5 Terminal.app windows open, running BASH and SSH.

When I'm transferring files I usually use scp, but for cases when a UI is more efficient I'll fire up Transmit.

Chicken of the VNC lets me mess about with the previously mentioned VNC servers.

Net resources:
I would be remiss if I didn't mention that I really don't like coding offline anymore, as I save hours of debugging with my jedi Google skills and I often cruise sourceforge and kin to see how others have solved programming problems like mine. When I finish up a web design I'll check it against the W3C validators so I know I'm not terribly out of spec.

Virtual machines:
I use a lot of Java VMs, and I don't believe the "write once, run anywhere" line for a second. It's more like "write once, port anywhere". Anyway, I usually develop in Eclipse (with its near-real-time progressive compilation) and then test against the OS X JVMs (1.4.2 and 1.5). Then I check in and pull the new code for tests on Sun's WinXP JVM and for small device apps and libs I'll run it against the CrEme 1.4 beta J2ME CDC JVM (mit der Swing!) because it is pretty sweet for a mobile JVM.

Java kit:
I haven't taken the plunge into the One Right Build System cult of Maven, and I usually use ant to build my projects. I mess with a lot of strange network applications which need special builds for bytecode which gets flung around the network, and all-in-one build systems (in or out of an IDE) usually can't hack the complexity. I'm not proud of that, but that's the way it is.

I often use the Apache http client to talk to our web services or scrape others', and I'll use nanoXML or EXML (which is now pretty much dead since the co. which ran it was purchased) for model based XML parsing. Honestly, though I wish it weren't so, Xalan and Xerces make me sick with their crap APIs and huge footprints so I go with small XML libs whenever I can.

I used install4j to wrap WinXP installers for 93 Photo Street, and it was pretty good for the price. I looked through some of the OSS java app executable wrappers and they were either too fragile or had a terrible development flow for my taste. I'm not saying it couldn't be done right, just that I didn't find one which didn't suck.

I've done a bit of Java Web Start deployment in closed environments, but it is a hassle and I don't think it is ready for prime time. Maybe since Apple shipped a passable JWS client it will get better, but I doubt it.

Graphics tools:
Over the years I've taught myself quite a bit of the dark art of pixel wrangling, and though I'm not in the same arena as my friends who are professional designers, I do use Photoshop Elements and Illustrator to whip up the odd widget or munge images into the right shape and form. iPhoto05 is finally good enough to handle my personal digital library, and I've used it more than I expected to catalog pictures for use in work prototypes and web sites. I also Cmd-Shift-Ctrl-4 + Space quite often to snag pieces of UI or imagery into Elements.

Social tools:
Of source, no code monkey is an island, and I read a fair number of coder blogs and news sites. In addition, my local coder community uses MediaWiki, Typepad, Wordpress, Linkmonger (now OSS!) and FreeNode IRC channels to keep in touch.

As an aside, while making this list I wished for another tool: A context menu on selected text which would wrap the text with an anchor element with the top Google result as the href. If I had that, there would be many, many links in this post. Someone has to have written that as an OS X service, no?

Where 2.0

I'm at the O'Reilly Where 2.0 conference today and tomorrow.

If you see me, I'm usually don't track people (even ones I know) while walking through a crowd so grab me if I'm strolling along.

43 Places Model

I make a fair number of graphs to distill applications down to their atomic units and relationships. I just started poking around the 43 places beta, and this is my understanding of their model:

43_places_model

I'm glad that "person" is a top level entity, and you know any application which mixes a data model with "place", "picture", and "comment" at the top is going to be interesting to me.

I'll be very interested in how the community created location tree flows over time. There doesn't seem to be any way for your run of the mill, non-admin community member to move locations from one region to the next, which will be necessary in cases where some more specific sub-region appears logically above a place. For example, if I've added "The Warming Hut" to "San Francisco" and later someone else adds "Crissy Field", somehow "The Warming Hut" relation should change to be contained in "Crissy Field."

It is also interesting to see the granularity of geography below which places are not resolved. In the U.S., the granularity is at the state level (which for CA is quite huge) and in Europe the granularity is at the national level (which can be relatively small). So, there is no way (in the UI I see, anyway) to associate small regions like a neighborhood in Fresna with a geographical place more specific than "California".

The folks running the site are old hands at community wrangling, so I expect good things from them in terms of dealing with the inevitable trolls, and so far the beta is the most interesting online community map I've seen, and I've seen a few.

Maps on Canvas

Lately, I can only get it together for brief free-time hacks. So, this evening I decided to spend an hour munging some of the TIGER/Line data for San Francisco into a ECMAScript data structure and then with the left over time I wrote a simple renderer for the new Canvas tag.

Unless you're into this sort of thing, I don't suggest you follow the link below. It looks just like the screen shot in this post, and you'll wait a while for the 1.4MB of map data to load. Then (if you're running a new Safari or a Deer Park alpha) you'll see a straight line drawing of San Francisco.

Sfcanvasscreenshot_1

Trevor's Canvas Map

It is interesting to see how different canvas implementations hold up to this sort of abuse. If we were to build a real map renderer on top of this technology, we would need to be smarter about how we go about switching between LODs and mixing with raster data.

Plazes + Maps + Dashboard

Perhaps in my Copious Free Timeā„¢ I'll get around to hacking together a Dashboard widget which checks my plazes location and displays a nice map of my surroundings. Perhaps it would remember where it has been so as to approach spime-hood.

For extra credit, I would make an SVG basic renderer using the new canvas API. After playing around with basic 3D projection, WebCore (originally I typed "WebKit" a la BeOS, *snort*) feels fast enough for basic SVG vector graphs and Ajax could deliver the SVG tree. Deer Park does not feel fast enough, but it is in early alpha, so I'm witholding judgement.

That said, if someone else took it upon themselves to build such a thing, I would show gratitude to h[er|is] tip jar.

Plans

There is an old joke:

Q: How do you make God laugh?
A: Tell him your plans.

While I appreciate the world's ability to bring interesting work to my doorstep, it does come at a price.  Today the price is Transmutable (the company) as an active enterprise.

In the last year I have learned many lessons about business, software, solitude, and friendship.  I started a company, wrote a software product from scratch, found distribution and sales channels, and realized that working alone all day is not a long term option for me.  At the moment of realization of that last lesson, an opportunity to take a short term contract with my old lab cohorts popped up.  Now that short contract has turned into a long term job.

So, I have placed Transmutable (the company) in suspended animation and I have changed the direction of Transmutable (the software development effort) towards the creation of a venue for non-commercial work in locative media.

The only visible, short term changes are minor edits to the Transmutable web site, with a notice about the change in licensing for future versions of 93 Photo Street and a link to the source repository.

I am as certain that I will start another company at some point as I am certain that I have more locative applications in me.  God (sic) won't tell me his (sic) plans, so in the mean time I'll keep getting things done and we'll see how it turns out.

Next »