Filed under: Main | Tags: appcelerator, aws, css, decisions, html5, jquery, protoshare, unfuddle, uservoice
Imagine that a web developer was frozen in ice in 2004 and thawed two months ago.
Screencasting. HTML5, CSS3. Sprites. CDNs for the masses. Google Gears and AppEngine. Amazon EC2, S3, SimpleDB.
Flash has come and gone (pretty much). JavaScript suddenly sucks less.
Chrome, Safari, Firefox. Web standards war has largely been won. (At least Internet Explorer still sucks.)
The list goes on and on. The last time I built something on my own, the world was a very different place. I’ve been aware of the changes, but in many of the things I’ve mentioned, I haven’t remained as steeped in the details as I once was. One of the benefits of not bootstrapping alone is that there’s often a team around you to help shoulder the load of understanding all the different parts of web development. My focus of late has been on the architecture side of things, so I’m quite rusty on building client-side code efficiently.
Not anymore. The last couple of weeks, I’ve spent my evenings and weekends getting current. Somewhere along the line, I saw an article from 2006 or so that posed the same question as the one above, only the year-of-freezing was 1999. (Sorry, I’ve since lost the link to that article!)
Back in the post-Bubble 1.0 days, I spent a lot of time integrating quality OOP and unit testing practices into my personal routine. Back then, people were already saying that it was difficult-to-impossible for a very small team to build a competitive website: there is simply too much to master. Today, oddly enough, there’s as much or more to master, but people don’t seem to be talking as much about how it’s hard-to-impossible for a small shop to be successful. That’s either because no one’s even considering it anymore, or it’s somehow a lot easier.
I’m not sure it’s either. It’s certainly no easier. While a lot of the tools I mention above make the process either, there are vastly more decisions to make. Which JavaScript framework to use, which CSS version to target, whether or not to build an iPhone-sized version of the site. Google AppEngine or Amazon Web Services … or one of the many wannabes? HTML5 or XHTML 1.x? (I chose HTML5, and man, is it weird to NOT be hassled by the W3C validator about a variety of things I worked hard to break bad habits on in the HTML4-to-XHTML transition.)
Clearly it’s possible for one and two person operations to get something off the ground — too many people have been doing it lately to ignore. But navigating the choices is just as tough as its always been, if not more so.
Where have I wound up? Well:
- The dev markup is fully HTML5 compliant.
- I’m using some CSS3 stuff. IE users can switch to something real. (Note to Mircosoft: live in the now, people. I can’t believe you still suck so badly, after two major browser releases. YOU. SUCK. If you can’t see that developers aren’t going to kowtow to your non-open-standards shit by now, you should switch back to fleshing out WebTV.)
- I’m using jQuery+Appcelerator Entourage. I never could have imagined that JavaScript could be so much fun. Yes, fun.
- Google Gears LocalServer + Amazon CloudFront means this is the fastest website I’ve ever built. I finally decided on Amazon Web Services for the hosting. The auto-scaling and load balancing stuff is just too cool.
- Nearly every image (the few of them that there are) on the new site is a PNG with alpha transparency.
The timeline has shifted. Hell, the whole product has shifted. I’m NOT building what I was planning to build when this blog started last month. Turns out that the market I was originally planning to get into is just way, way too crowded. So now I’m onto something in the same neighborhood, but on a different street, so to speak.
And finally, the guy I mentioned earlier who did my logo after I dropped 99Designs has signed on as Creative Director of this venture. I couldn’t be more thrilled, as one thing that’s crystal clear is that if you want a chance to succeed, your app had better be useful and beautiful.
UserVoice is still a great decision, and we’ve got that integrated. ProtoShare, as much as I love it, proved to have too steep of a learning curve for such a small team. We opted for telephone and IM to iron out designs (he and I don’t live in the same state). Unfuddle is helping a lot, and I can’t say enough positive things about Google Apps for Enterprise. I also settled on MailChimp for managing the announcements list.
Launch plan: mid-July sometime. Stay tuned.
So I attended the first ever Finance4Founders event tonight, in an attempt to learn more about what I don’t know about the financing part of a tech startup.

Analog Socializing at Finance4Founders, Jun 18 2009
Sure, I know the broad strokes, but I start to “fuzz out” when the talk gets hot and heavy about term sheets and “3x lick pref.” (Yes, someone in attendance actually said that, just like that.) If you don’t know, here’s a good post about “lick prefs“.
The event was a good icebreaker, and eye-opener. For example, in the current economy, if you raise $5 million in VC, the gist I got is that you’d better be ready to deliver a company that earns $20 million annually within a couple years. Perhaps I misunderstood, but once you take on VC, you’re swimming with the sharks.
They all want to help; at least the good ones do. A fair deal for venture capital equates to everyone working together to make the size of the overall pie bigger, so that there’s less concern over the size of each investor’s individual piece.
The overriding theme was to retain as much control as you can as a founder, even if that means accepting a smaller valuation. After all, valuation in an A round simply boils down to a dick measuring contest.
Remember: The valuation will change over time, but the distribution of power won’t change as much. It’s worth more than money.
The biggest take-away for me was that it was good to get out and rub elbows with some other entrepreneurs. When you’re bootstrapping, it’s easy to retreat into a bubble, especially if you’re “geekstrapping” and building the product yourself.
With an event like this, the fly on the wall has to buzz around a little bit. It’s not my comfort zone, but ultimately it’s good practice. Even for raising angel money, if I choose to go that route, I’m going to have to have a more polished quick-pitch. Other entrepreneurs, as it turns out, make great sounding boards for honing your spiel.
I’ll attend more of these in the future. I highly recommend attending if you can. I found the post-presentation table sessions to be especially great. Maybe this sort of thing happens more often than I think, but I don’t think there are many supportive environments where investor-types and entrepreneur-types can share experiences and gain a better understanding of each other. It goes a long way to making any future relationships with investors much more productive and rewarding.
One other great nugget of the evening: “If you go looking for money, you’ll mostly find advice. If you go looking for advice, you’re much more likely to find money.”
Finally, the whole thing reminded me of this excellent post on the ingredients of success. Keeping this one in mind.
Thanks to @davemcclure and @danmartell for putting on a great event, and for all the investors in attendance for your time and patience.
Filed under: Main | Tags: 37signals, chartbeat, getsatisfaction, google, protoshare, quickbooks, unfuddle, uservoice
It turns out I have a fifty dollar flinch point for ancillary services. If it’s not core to the delivery of my service, I’m not willing to pay more than fifty bucks a month to get started.
That’s not to say I’m not ever willing to pay more than $50. As the business grows, I’ll happily move into more expensive tiers if I need to. But if I can’t get started for $50 a month or less, I’m going to keep shopping. If I find something that gets the job done for under $50 and has a growth path, I’ll probably never leave, unless your service starts to suck.
Chartbeat, ProtoShare, Unfuddle, Google Apps, even QuickBooks Online Edition and my Bank of America business tool suite … Every single “support” service I’m using that I’ve mentioned since the start of this blog is $50/month or less to get started with a useful-enough feature set to justify signing up.
This became crystal clear to me when doing a feature comparison between UserVoice and Get Satisfaction. The two feedback management services have similar feature sets, but at radically different price points.
The features most important to me are: no ads, ability to skin/brand, ability to CNAME a sub-domain to the service, and Single Sign-On integration capability.
| UserVoice | Get Satisfaction | |
|---|---|---|
| Ad Free | Tin plan ($19/mo) | Basic plan ($99/mo) |
| Skinnable | Logo in Tin plan ($19/mo) | Logo in Premium plan ($279/mo) |
| Domain CNAME | Tin plan ($19/mo) | White label plan ($899/mo) |
| Single Sign-On | Bronze plan ($89/mo) | Premium plan ($279/mo) |
Now, I really wanted Single Sign-On, but was not going to do it for $89/mo. I’d decided I’d just live without that, and deal with it later after an upgrade allowed me access to that feature and the opportunity for some messy and painful conversion/identity sync process.
However, while writing this post, I saw a “For Startups” link on the UserVoice page that gave me a discount code for checking out that gives me the Bronze Plan for 50% off for the first 12 months. 50% off == $44.50 == under $50/month == SOLD.
I know that everyone wants the REVENUE from Enterprise Sales, since that’s where the $10k/month deals come from. But guess what? That’s where your expensive sales team comes from too. There’s no hard evidence that I’m going to want or need to upgrade to “Enterprise” level services, and I’m much more likely to upgrade inside a product I’m already using if/when that time comes. Ignore us bootstrappers at your own risk, folks.
One more note on Get Satisfaction: This blog post didn’t help them. However, I’ll also say that Jason Fried has lost his startup perspective by suggesting that anyone who gives a shit about their customers should build their own support forum/channel. I’ve got my actual product to build, Jason, thank you very much. When I’ve kept it real enough to be raking millions per year like 37 Signals, perhaps I’ll roll my own then. Or, perhaps I won’t, since I clearly will not have needed it when I reach that level of growth without having built my own.
Filed under: Main
Hey folks, I’m opening up two other blogging spots here. If you know of others who are just getting off the ground who might like to document their experiences anonymously, msg me on Twitter. I’m interested in real bootstrapper types who want to talk about what they’re going through without (necessarily) revealing who they are until they’re ready.
It’s a way to have a permanent record without requiring that it be on YOUR permanent record.
So in the week or so since my last post, I’ve had a chance to slow down. I’m now posting from the conference hall at 140 | The Twitter Conference, where I had originally planned to launch my app.
Now that I’m here, I’m glad I decided to postpone the launch. In the past week, there have been “day job” events which required my attention, and The Wife has been sick with a nasty cough that’s kept both of us from sleeping well for several days. If I’d actually stuck with the launch plan, I’d be in even worse shape than I envisioned when I decided to pull the plug last week.
While I’ve made progress on a lot of things: LLC formation finished, competitive analysis done … I spent a lot of time this past week wading through different app frameworks trying to decide which to use as my base. I’ve also spent a lot of time brainstorming on the value that my API should bring, or even could bring, to differentiate from competitors.
It’s all been a reminder: Bootstrapping a tech start-up alone, or with a very small team, requires a deliberate embracing of a split personality. On the one side, you’ve got to keep an eye on delivering something that customers will want (and ideally pay for), and on the other side you’ve got to keep an eye on how you’re building, building for scale/maintenance, etc.
I found that once I pulled the plug on the launch date, I have gone way off in the “geek” mode, spending time exploring different application frameworks and other geeky stuff. That’s my comfort zone, to be sure. My mindset prior to bailing on the launch date was much more on “fix this later, get something functional-enough up now.”
So, I’ll have to pick another date pretty soon. I’m putting a two-week cap on the “what/how” decision cycle for lower-level decisions, and will pick a date to shoot for by/before then.
If you don’t pick a time when you have to launch *something*, then you won’t. The trick is figuring out how to cut features on the fly in such a way that the initial launch isn’t so stripped that it doesn’t matter.
Finally, if you haven’t looked at Startup Lessons Learned, you should. I’ll comment more on that soon, as I did look at Eric Ries presentation a few days ago and thought it was great. I’m working on implementing as many of those suggestions as I can into my startup flow.
Here’s a little affirmation of my decision last night to wait until the app is truly ready before launch: DHH at Startup School 08.
Aside from general good (if smugly-delivered) advice on who to target, how to pace yourself, etc, the money quote to me was:
The patterns you set and the practices you choose to adopt when you’re a start-up will stick with you.
-David Heinemeier Hanson
I’m glad I’m taking the time to get Continuous Integration in place, build out solid unit tests from the beginning, and take the time to “go public” properly. The people who put together great launches that get everyone talking (or tweeting) about their must-see factor didn’t crap them out in two weeks.
I’m not going to be ready for 140, and that’s okay.
It’s okay because I’m the boss, and I say it’s okay. That’s one of the simple pleasures of bootstrapping: there are no anxious money dudes embedded at various depths in your ass.
I really WANT to launch at 140. However, there’s only one shot at a first impression, and since no one’s driving me to that opening but myself, I’m going to wait until the time is really right.
This isn’t to say I’m going to wait until my app is perfect: I’m just going to wait until I know it won’t be brushed off as “not ready for prime time” and forgotten. I’ve already got too much invested to accept that possible outcome. It’s all good: I’m in a groove now, and making progress every day at a rapid pace. I’ll be ready soon.
I was thinking back to Dave McClure’s post again tonight, and the litany against fear. It’s hard to be building a social networking-based app and to see others launching with better funding, getting great buzz and all that. But there’s no reason to be afraid of missing an opportunity at 140, since everyone agrees that the social thing is here to stay.
If anything, the whirlwind around me is further evidence that I need to be cool. So I’ll be cool.
Well, that sucked. No wonder I’ve never done this at the beginning of a project/company/venture before.
Talk about getting into the weeds. I’m a CI n00b who’d never used CruiseControl before. I’m usually a PHP guy, and I really wanted to use phpUnderControl to get a good grip on this thing early on. However, conflicting notes in the PHPUnit manual got me off on the wrong path, and the oh-so-clever use of the latest builds of Subversion from CollabNet screwed things up further. To top it all off, the Zend Framework docs for PHPUnit integration are thin at best. I don’t think I’d have gotten through that part if not for this helpful write-up.
But, I’d promised you two or three early readers of this blog that I was going to get this done, so that helped to keep me from wussing out. The end result:
- 2 days burned
- kick ass testing system
Was it worth it? I’ll let you know in a couple of days. It’s hard to measure this kind of thing, because the time spent here, especially now at this phase of the company/product lifespan, should pay off exponentially over time. Even on my extremely tight timeline (now down to just over a week before launch!!!), I think it’ll help because the tests will keep things on track when I’m bleary-eyed and sleep-deprived a couple days from now. That’s the plan, anyway.
Even if I wind up cutting features for the launch (an inevitability anyway), this was time well spent. Just wish it hadn’t sucked so much. I’ve taken notes and will publish them later … now thinking post-launch.
Thankfully, The Wife was able to crank through some market analysis, so we’ve made some adjustments about what we’ll launch with that’ll get the most bang, and will start focusing on that in the morning. She’s excellent — you just can’t bootstrap without a support system.
Finally, after punting on the 99 Designs contest, I’ve gotten some great comps for the logo from my buddy who’s lending a hand at a huge discount. Hoping to put the logo to bed tomorrow and get some cards ordered by Tuesday.
It’s been a challenging Saturday so far, as I’m bucking the normal routine with the family to continue the battle with the timeline I’ve bitten off. They’re all good sports, and very supportive of the effort. I just hate messing with the regular Saturday fun stuff.
I just pulled the plug on the 99 Designs contest. The overall quality of what was submitted was quite low, with a few standouts. I feel bad about cancelling, but at the same time a wave of relief has already swept over me. After the time sink of coaching a half-dozen people toward what I want last night, along with just canning submissions from 20 more people, it just became clear to me that it was too risky to bet this launch on a 3 day contest. I’ve had good luck in the past with a regular-length 7 day contest, and thought I might get away with a shorter one this time by paying more and having it span a weekend. But, no luck.
Instead, I’ve turned to a known entity who’s fortunately available to help out on short notice. I’m relieved that I’ll be working with him — an old buddy from a start-up we worked on together a decade ago. Sometimes it pays to be older.
In other news, the Cruise Control setup is nearly complete, and I’ll post my step-by-step shortly. And, for grins, this blog is now available on Amazon Kindle. So if nothing else, I’ll make a few bucks if my mom subscribes. Finally, got my LLC docs signed and returned this morning, and got a haircut so that I won’t have that “just-had-a-haircut” look in 10 days.
Blew nearly two hours last night on reviewing mostly-lousy submissions on private 99 Designs contest. For a $400 prize, I want something that looks better than what I could do.
Is two hours a slip? When there are only 10 days left, yeah. I don’t have a firm schedule, but that was two hours I foolishly wasn’t planning on.
Well, at least I’ve had a nap before the CruiseControl stuff.
And yes, The Wife has asked what you’re asking by now: Do you really have time to be narrating when you have so little time? The answer, of course, is no. But when I think back on the times I’ve done this before, I always wish I’d written down more.
This is a story that must be told as it unfolds, or it’s never told (or told accurately).