The creator’s dilemma

I have been working on this thing for the past few weeks. It’s a nifty idea spawned from a need I had recently, and I figured I could package it as a service—you know, SaaS stuff. You input data and the system magically formats it for you. (No, I’m not talking about the idea I tried launching 2 years ago, but something in the same vain…)

Anyways, so over this holiday break I put in some time and crafted a basic working system to demonstrate my concept. Then I put it in front of a few friends who are in my target demographic. What I heard was this:

  • Neat idea!
  • I love the way it does the magic for you!
  • I can see it used for X, Y, and Z purposes!

That’s really encouraging! Yay! Proof of concept … sort of. I also heard this:

  • I wish I could import file formats A, B, and C
  • I don’t get the formatting syntax
  • I wish it also had features D, E, and F

Here I had spent time crafting a syntax I thought was relatively simple. Think of it like Wiki formatting: you type raw text in and then add some special characters and boom you get neatly-formatted data. But because this SaaS is a kind of visualization tool, people want me to be able to import all sorts of spreadsheet formats and other document types. That was exactly what I was trying to avoid.

Do I listen to my users who say they just want to basically have a version of their Office suite replicated in my service? If I go down that route I’m afraid I’ll end up being very feature incomplete. (Which, incidentally, is what happened with that other startup idea I had. There was no way for me to reach feature parity.) I was hoping that by forcing people to edit in a syntax not too distant from Wiki formatting and CSVs I could skip the problem of me having to create a GUI. I’ve learned my lesson about GUIs: never make a pretty GUI because it will always be feature deficient.

And yet, I know it’s not really the syntax that’s bothering my users. Really, it comes down to the same problem I before: users already did the work and they don’t want to do it again. I can totally see that point. They want to copy or import. They want tools to edit. I also know that is a hell of a lot of work.

Being a creator is hard. I’m trying to encourage simplicity in the face of complexity. But I also need to please the people that will carry my dreams forward. The art of all of this is finding the balance between what I think is a “good enough” experience that will get my users to their end goals, at the same time I need to make things easy enough that the amount of work they do is minimized.

Steve Yegge’s “Google rant” post

Copied from SiliconFilter.com, copied from the original post on Google+.

Stevey’s Google Platforms Rant

I was at Amazon for about six and a half years, and now I’ve been at Google for that long. One thing that struck me immediately about the two companies — an impression that has been reinforced almost daily — is that Amazon does everything wrong, and Google does everything right. Sure, it’s a sweeping generalization, but a surprisingly accurate one. It’s pretty crazy. There are probably a hundred or even two hundred different ways you can compare the two companies, and Google is superior in all but three of them, if I recall correctly. I actually did a spreadsheet at one point but Legal wouldn’t let me show it to anyone, even though recruiting loved it.

I mean, just to give you a very brief taste: Amazon’s recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they’ve made to level it out. And their operations are a mess; they don’t really have SREs and they make engineers pretty much do everything, which leaves almost no time for coding – though again this varies by group, so it’s luck of the draw. They don’t give a single shit about charity or helping the needy or community contributions or anything like that. Never comes up there, except maybe to laugh about it. Their facilities are dirt-smeared cube farms without a dime spent on decor or common meeting areas. Their pay and benefits suck, although much less so lately due to local competition from Google and Facebook. But they don’t have any of our perks or extras — they just try to match the offer-letter numbers, and that’s the end of it. Their code base is a disaster, with no engineering standards whatsoever except what individual teams choose to put in place.

To be fair, they do have a nice versioned-library system that we really ought to emulate, and a nice publish-subscribe system that we also have no equivalent for. But for the most part they just have a bunch of crappy tools that read and write state machine information into relational databases. We wouldn’t take most of it even if it were free.

I think the pubsub system and their library-shelf system were two out of the grand total of three things Amazon does better than google.

I guess you could make an argument that their bias for launching early and iterating like mad is also something they do well, but you can argue it either way. They prioritize launching early over everything else, including retention and engineering discipline and a bunch of other stuff that turns out to matter in the long run. So even though it’s given them some competitive advantages in the marketplace, it’s created enough other problems to make it something less than a slam-dunk.

But there’s one thing they do really really well that pretty much makes up for ALL of their political, philosophical and technical screw-ups.

Jeff Bezos is an infamous micro-manager. He micro-manages every single pixel of Amazon’s retail site. He hired Larry Tesler, Apple’s Chief Scientist and probably the very most famous and respected human-computer interaction expert in the entire world, and then ignored every goddamn thing Larry said for three years until Larry finally — wisely — left the company. Larry would do these big usability studies and demonstrate beyond any shred of doubt that nobody can understand that frigging website, but Bezos just couldn’t let go of those pixels, all those millions of semantics-packed pixels on the landing page. They were like millions of his own precious children. So they’re all still there, and Larry is not.

Micro-managing isn’t that third thing that Amazon does better than us, by the way. I mean, yeah, they micro-manage really well, but I wouldn’t list it as a strength or anything. I’m just trying to set the context here, to help you understand what happened. We’re talking about a guy who in all seriousness has said on many public occasions that people should be paying him to work at Amazon. He hands out little yellow stickies with his name on them, reminding people “who runs the company” when they disagree with him. The guy is a regular… well, Steve Jobs, I guess. Except without the fashion or design sense. Bezos is super smart; don’t get me wrong. He just makes ordinary control freaks look like stoned hippies.

So one day Jeff Bezos issued a mandate. He’s doing that all the time, of course, and people scramble like ants being pounded with a rubber mallet whenever it happens. But on one occasion — back around 2002 I think, plus or minus a year — he issued a mandate that was so out there, so huge and eye-bulgingly ponderous, that it made all of his other mandates look like unsolicited peer bonuses.

His Big Mandate went something along these lines:

1) All teams will henceforth expose their data and functionality through service interfaces.

2) Teams must communicate with each other through these interfaces.

3) There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.

4) It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter. Bezos doesn’t care.

5) All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.

6) Anyone who doesn’t do this will be fired.

7) Thank you; have a nice day!

Ha, ha! You 150-odd ex-Amazon folks here will of course realize immediately that #7 was a little joke I threw in, because Bezos most definitely does not give a shit about your day.

#6, however, was quite real, so people went to work. Bezos assigned a couple of Chief Bulldogs to oversee the effort and ensure forward progress, headed up by Uber-Chief Bear Bulldog Rick Dalzell. Rick is an ex-Armgy Ranger, West Point Academy graduate, ex-boxer, ex-Chief Torturer slash CIO at Wal*Mart, and is a big genial scary man who used the word “hardened interface” a lot. Rick was a walking, talking hardened interface himself, so needless to say, everyone made LOTS of forward progress and made sure Rick knew about it.

Over the next couple of years, Amazon transformed internally into a service-oriented architecture. They learned a tremendous amount while effecting this transformation. There was lots of existing documentation and lore about SOAs, but at Amazon’s vast scale it was about as useful as telling Indiana Jones to look both ways before crossing the street. Amazon’s dev staff made a lot of discoveries along the way. A teeny tiny sampling of these discoveries included:

- pager escalation gets way harder, because a ticket might bounce through 20 service calls before the real owner is identified. If each bounce goes through a team with a 15-minute response time, it can be hours before the right team finally finds out, unless you build a lot of scaffolding and metrics and reporting.

- every single one of your peer teams suddenly becomes a potential DOS attacker. Nobody can make any real forward progress until very serious quotas and throttling are put in place in every single service.

- monitoring and QA are the same thing. You’d never think so until you try doing a big SOA. But when your service says “oh yes, I’m fine”, it may well be the case that the only thing still functioning in the server is the little component that knows how to say “I’m fine, roger roger, over and out” in a cheery droid voice. In order to tell whether the service is actually responding, you have to make individual calls. The problem continues recursively until your monitoring is doing comprehensive semantics checking of your entire range of services and data, at which point it’s indistinguishable from automated QA. So they’re a continuum.

- if you have hundreds of services, and your code MUST communicate with other groups’ code via these services, then you won’t be able to find any of them without a service-discovery mechanism. And you can’t have that without a service registration mechanism, which itself is another service. So Amazon has a universal service registry where you can find out reflectively (programmatically) about every service, what its APIs are, and also whether it is currently up, and where.

- debugging problems with someone else’s code gets a LOT harder, and is basically impossible unless there is a universal standard way to run every service in a debuggable sandbox.

That’s just a very small sample. There are dozens, maybe hundreds of individual learnings like these that Amazon had to discover organically. There were a lot of wacky ones around externalizing services, but not as many as you might think. Organizing into services taught teams not to trust each other in most of the same ways they’re not supposed to trust external developers.

This effort was still underway when I left to join Google in mid-2005, but it was pretty far advanced. From the time Bezos issued his edict through the time I left, Amazon had transformed culturally into a company that thinks about everything in a services-first fashion. It is now fundamental to how they approach all designs, including internal designs for stuff that might never see the light of day externally.

At this point they don’t even do it out of fear of being fired. I mean, they’re still afraid of that; it’s pretty much part of daily life there, working for the Dread Pirate Bezos and all. But they do services because they’ve come to understand that it’s the Right Thing. There are without question pros and cons to the SOA approach, and some of the cons are pretty long. But overall it’s the right thing because SOA-driven design enables Platforms.

That’s what Bezos was up to with his edict, of course. He didn’t (and doesn’t) care even a tiny bit about the well-being of the teams, nor about what technologies they use, nor in fact any detail whatsoever about how they go about their business unless they happen to be screwing up. But Bezos realized long before the vast majority of Amazonians that Amazon needs to be a platform.

You wouldn’t really think that an online bookstore needs to be an extensible, programmable platform. Would you?

Well, the first big thing Bezos realized is that the infrastructure they’d built for selling and shipping books and sundry could be transformed an excellent repurposable computing platform. So now they have the Amazon Elastic Compute Cloud, and the Amazon Elastic MapReduce, and the Amazon Relational Database Service, and a whole passel’ o’ other services browsable ataws.amazon.com. These services host the backends for some pretty successful companies, reddit being my personal favorite of the bunch.

The other big realization he had was that he can’t always build the right thing. I think Larry Tesler might have struck some kind of chord in Bezos when he said his mom couldn’t use the goddamn website. It’s not even super clear whose mom he was talking about, and doesn’t really matter, because nobody’s mom can use the goddamn website. In fact I myself find the website disturbingly daunting, and I worked there for over half a decade. I’ve just learned to kinda defocus my eyes and concentrate on the million or so pixels near the center of the page above the fold.

I’m not really sure how Bezos came to this realization — the insight that he can’t build one product and have it be right for everyone. But it doesn’t matter, because he gets it. There’s actually a formal name for this phenomenon. It’s called Accessibility, and it’s the most important thing in the computing world.

The. Most. Important. Thing.

If you’re sorta thinking, “huh? You mean like, blind and deaf people Accessibility?” then you’re not alone, because I’ve come to understand that there are lots and LOTS of people just like you: people for whom this idea does not have the right Accessibility, so it hasn’t been able to get through to you yet. It’s not your fault for not understanding, any more than it would be your fault for being blind or deaf or motion-restricted or living with any other disability. When software — or idea-ware for that matter — fails to be accessible toanyone for any reason, it is the fault of the software or of the messaging of the idea. It is an Accessibility failure.

Like anything else big and important in life, Accessibility has an evil twin who, jilted by the unbalanced affection displayed by their parents in their youth, has grown into an equally powerful Arch-Nemesis (yes, there’s more than one nemesis to accessibility) named Security. And boy howdy are the two ever at odds.

But I’ll argue that Accessibility is actually more important than Security because dialing Accessibility to zero means you have no product at all, whereas dialing Security to zero can still get you a reasonably successful product such as the Playstation Network.

So yeah. In case you hadn’t noticed, I could actually write a book on this topic. A fat one, filled with amusing anecdotes about ants and rubber mallets at companies I’ve worked at. But I will never get this little rant published, and you’ll never get it read, unless I start to wrap up.

That one last thing that Google doesn’t do well is Platforms. We don’t understand platforms. We don’t “get” platforms. Some of you do, but you are the minority. This has become painfully clear to me over the past six years. I was kind of hoping that competitive pressure from Microsoft and Amazon and more recently Facebook would make us wake up collectively and start doing universal services. Not in some sort of ad-hoc, half-assed way, but in more or less the same way Amazon did it: all at once, for real, no cheating, and treating it as our top priority from now on.

But no. No, it’s like our tenth or eleventh priority. Or fifteenth, I don’t know. It’s pretty low. There are a few teams who treat the idea very seriously, but most teams either don’t think about it all, ever, or only a small percentage of them think about it in a very small way.

It’s a big stretch even to get most teams to offer a stubby service to get programmatic access to their data and computations. Most of them think they’re building products. And a stubby service is a pretty pathetic service. Go back and look at that partial list of learnings from Amazon, and tell me which ones Stubby gives you out of the box. As far as I’m concerned, it’s none of them. Stubby’s great, but it’s like parts when you need a car.

A product is useless without a platform, or more precisely and accurately, a platform-less product will always be replaced by an equivalent platform-ized product.

Google+ is a prime example of our complete failure to understand platforms from the very highest levels of executive leadership (hi Larry, Sergey, Eric, Vic, howdy howdy) down to the very lowest leaf workers (hey yo). We all don’t get it. The Golden Rule of platforms is that you Eat Your Own Dogfood. The Google+ platform is a pathetic afterthought. We had no API at all at launch, and last I checked, we had one measly API call. One of the team members marched in and told me about it when they launched, and I asked: “So is it the Stalker API?” She got all glum and said “Yeah.” I mean, I was joking, but no… the only API call we offer is to get someone’s stream. So I guess the joke was on me.

Microsoft has known about the Dogfood rule for at least twenty years. It’s been part of their culture for a whole generation now. You don’t eat People Food and give your developers Dog Food. Doing that is simply robbing your long-term platform value for short-term successes. Platforms are all about long-term thinking.

Google+ is a knee-jerk reaction, a study in short-term thinking, predicated on the incorrect notion that Facebook is successful because they built a great product. But that’s not why they are successful. Facebook is successful because they built an entire constellation of products by allowing other people to do the work. So Facebook is different for everyone. Some people spend all their time on Mafia Wars. Some spend all their time on Farmville. There are hundreds or maybe thousands of different high-quality time sinks available, so there’s something there for everyone.

Our Google+ team took a look at the aftermarket and said: “Gosh, it looks like we need some games. Let’s go contract someone to, um, write some games for us.” Do you begin to see how incredibly wrong that thinking is now? The problem is that we are trying to predict what people want and deliver it for them.

You can’t do that. Not really. Not reliably. There have been precious few people in the world, over the entire history of computing, who have been able to do it reliably. Steve Jobs was one of them. We don’t have a Steve Jobs here. I’m sorry, but we don’t.

Larry Tesler may have convinced Bezos that he was no Steve Jobs, but Bezos realized that he didn’t need to be a Steve Jobs in order to provide everyone with the right products: interfaces and workflows that they liked and felt at ease with. He just needed to enable third-party developers to do it, and it would happen automatically.

I apologize to those (many) of you for whom all this stuff I’m saying is incredibly obvious, because yeah. It’s incredibly frigging obvious. Except we’re not doing it. We don’t get Platforms, and we don’t get Accessibility. The two are basically the same thing, because platforms solve accessibility. A platform is accessibility.

So yeah, Microsoft gets it. And you know as well as I do how surprising that is, because they don’t “get” much of anything, really. But they understand platforms as a purely accidental outgrowth of having started life in the business of providing platforms. So they have thirty-plus years of learning in this space. And if you go to msdn.com, and spend some time browsing, and you’ve never seen it before, prepare to be amazed. Because it’s staggeringly huge. They have thousands, and thousands, and THOUSANDS of API calls. They have a HUGE platform. Too big in fact, because they can’t design for squat, but at least they’re doing it.

Amazon gets it. Amazon’s AWS (aws.amazon.com) is incredible. Just go look at it. Click around. It’s embarrassing. We don’t have any of that stuff.

Apple gets it, obviously. They’ve made some fundamentally non-open choices, particularly around their mobile platform. But they understand accessibility and they understand the power of third-party development and they eat their dogfood. And you know what? They make pretty good dogfood. Their APIs are a hell of a lot cleaner than Microsoft’s, and have been since time immemorial.

Facebook gets it. That’s what really worries me. That’s what got me off my lazy butt to write this thing. I hate blogging. I hate… plussing, or whatever it’s called when you do a massive rant in Google+ even though it’s a terrible venue for it but you do it anyway because in the end you really do want Google to be successful. And I do! I mean, Facebook wants me there, and it’d be pretty easy to just go. But Google is home, so I’m insisting that we have this little family intervention, uncomfortable as it might be.

After you’ve marveled at the platform offerings of Microsoft and Amazon, and Facebook I guess (I didn’t look because I didn’t want to get too depressed), head over to developers.google.com and browse a little. Pretty big difference, eh? It’s like what your fifth-grade nephew might mock up if he were doing an assignment to demonstrate what a big powerful platform company might be building if all they had, resource-wise, was one fifth grader.

Please don’t get me wrong here — I know for a fact that the dev-rel team has had to FIGHT to get even this much available externally. They’re kicking ass as far as I’m concerned, because they DO get platforms, and they are struggling heroically to try to create one in an environment that is at best platform-apathetic, and at worst often openly hostile to the idea.

I’m just frankly describing what developers.google.com looks like to an outsider. It looks childish. Where’s the Maps APIs in there for Christ’s sake? Some of the things in there are labs projects. And the APIs for everything I clicked were… they were paltry. They were obviously dog food. Not even good organic stuff. Compared to our internal APIs it’s all snouts and horse hooves.

And also don’t get me wrong about Google+. They’re far from the only offenders. This is a cultural thing. What we have going on internally is basically a war, with the underdog minority Platformers fighting a more or less losing battle against the Mighty Funded Confident Producters.

Any teams that have successfully internalized the notion that they should be externally programmable platforms from the ground up are underdogs — Maps and Docs come to mind, and I know GMail is making overtures in that direction. But it’s hard for them to get funding for it because it’s not part of our culture. Maestro’s funding is a feeble thing compared to the gargantuan Microsoft Office programming platform: it’s a fluffy rabbit versus a T-Rex. The Docs team knows they’ll never be competitive with Office until they can match its scripting facilities, but they’re not getting any resource love. I mean, I assume they’re not, given that Apps Script only works in Spreadsheet right now, and it doesn’t even have keyboard shortcuts as part of its API. That team looks pretty unloved to me.

Ironically enough, Wave was a great platform, may they rest in peace. But making something a platform is not going to make you an instant success. A platform needs a killer app. Facebook — that is, the stock service they offer with walls and friends and such — is the killer app for the Facebook Platform. And it is a very serious mistake to conclude that the Facebook App could have been anywhere near as successful without the Facebook Platform.

You know how people are always saying Google is arrogant? I’m a Googler, so I get as irritated as you do when people say that. We’re not arrogant, by and large. We’re, like, 99% Arrogance-Free. I did start this post — if you’ll reach back into distant memory — by describing Google as “doing everything right”. We do mean well, and for the most part when people say we’re arrogant it’s because we didn’t hire them, or they’re unhappy with our policies, or something along those lines. They’re inferring arrogance because it makes them feel better.

But when we take the stance that we know how to design the perfect product for everyone, and believe you me, I hear that a lot, then we’re being fools. You can attribute it to arrogance, or naivete, or whatever — it doesn’t matter in the end, because it’s foolishness. There IS no perfect product for everyone.

And so we wind up with a browser that doesn’t let you set the default font size. Talk about an affront to Accessibility. I mean, as I get older I’m actually going blind. For real. I’ve been nearsighted all my life, and once you hit 40 years old you stop being able to see things up close. So font selection becomes this life-or-death thing: it can lock you out of the product completely. But the Chrome team is flat-out arrogant here: they want to build a zero-configuration product, and they’re quite brazen about it, and Fuck You if you’re blind or deaf or whatever. Hit Ctrl-+ on every single page visit for the rest of your life.

It’s not just them. It’s everyone. The problem is that we’re a Product Company through and through. We built a successful product with broad appeal — our search, that is — and that wild success has biased us.

Amazon was a product company too, so it took an out-of-band force to make Bezos understand the need for a platform. That force was their evaporating margins; he was cornered and had to think of a way out. But all he had was a bunch of engineers and all these computers… if only they could be monetized somehow… you can see how he arrived at AWS, in hindsight.

Microsoft started out as a platform, so they’ve just had lots of practice at it.

Facebook, though: they worry me. I’m no expert, but I’m pretty sure they started off as a Product and they rode that success pretty far. So I’m not sure exactly how they made the transition to a platform. It was a relatively long time ago, since they had to be a platform before (now very old) things like Mafia Wars could come along.

Maybe they just looked at us and asked: “How can we beat Google? What are they missing?”

The problem we face is pretty huge, because it will take a dramatic cultural change in order for us to start catching up. We don’t do internal service-oriented platforms, and we just as equally don’t do external ones. This means that the “not getting it” is endemic across the company: the PMs don’t get it, the engineers don’t get it, the product teams don’t get it, nobody gets it. Even if individuals do, even if YOU do, it doesn’t matter one bit unless we’re treating it as an all-hands-on-deck emergency. We can’t keep launching products and pretending we’ll turn them into magical beautiful extensible platforms later. We’ve tried that and it’s not working.

The Golden Rule of Platforms, “Eat Your Own Dogfood”, can be rephrased as “Start with a Platform, and Then Use it for Everything.” You can’t just bolt it on later. Certainly not easily at any rate — ask anyone who worked on platformizing MS Office. Or anyone who worked on platformizing Amazon. If you delay it, it’ll be ten times as much work as just doing it correctly up front. You can’t cheat. You can’t have secret back doors for internal apps to get special priority access, not for ANY reason. You need to solve the hard problems up front.

I’m not saying it’s too late for us, but the longer we wait, the closer we get to being Too Late.

I honestly don’t know how to wrap this up. I’ve said pretty much everything I came here to say today. This post has been six years in the making. I’m sorry if I wasn’t gentle enough, or if I misrepresented some product or team or person, or if we’re actually doing LOTS of platform stuff and it just so happens that I and everyone I ever talk to has just never heard about it. I’m sorry.

But we’ve gotta start doing this right.

Pivot pivot pivot … the entrepreneur’s journey

Last year I finally got around to implementing a really good working prototype of an idea I had wanted to do for quite a while: a self-service website building tool. That became Hiyakoo, and I started trying to demo it in the fall. I totally felt (and still do) that there has to be a better way of creating websites for the layperson that doesn’t require a skillset like mine, but I wanted it to be powerful enough that a pro web designer could make sites really sing. Somewhere around December I figured out a few things that I didn’t really want to hear but nonetheless were really important:

Even simple is still too hard.

I tried to make things pretty obvious in a way that once you got a few of the basic mechanics down you could pretty much edit everything with a couple of clicks. I tried to pare down complexity by forcing people to use a single column for layout (which is why I refused to call the site structure a “template”). And I was in the process of installing a help system that would be totally contextual. Yet, this was too complex. There were sliders and panels tucked behind other UI.

The exception is always the rule.

When you tell a small business that they can build their website with ease they begin to do this free association between the word “website” and all the things they can conceive: menus, iPhone app, image gallery, Yelp, shopping cart, special deals and announcements, blogs. More interestingly, even if you start out with a really clean layout it always ends up getting tweaked in a way you (the web designer) didn’t expect. I’m not saying this is bad, I’m just saying that it is very hard for me to sell someone on the idea of simplicity when in the business owner’s mind they might be wanting a special callout of their Groupon or holiday specials. The layout over time just needs to change.

A web designer is still required.

I was really hoping that if I just spent a little time with the business in the beginning that I could get them up and running and they’d be able to edit things from there. That may be true in a bootstrapping sense, but what happens is that questions pop up and it can quickly turn into something much more than just a simple support ticket. Small businesses (in my experience) have so much on their minds that their website is really not top priority. Even for tech-savvy social-media-aware businesses they’d probably end up using Twitter more often than not to post updates to the people that cared—tweaking their main website probably still needs a web designer.

So I’ve been sitting on Hiyakoo for a few months now and just thinking there still must be a way to make it work. In the meantime, a friend is apparently trying to launch a very simple website creator tool too, and about.me just had a big ad campaign. Maybe the time is ripe for a new breed of simple website builders?

Maybe a couple of weeks ago I was still pondering what to do about this code I’ve been sitting on and then I thought: what if I could change the way people thought of what a website is? What if it was just more of a web presence? What if it had a little more flexibility than about.me or flavors.me, but not nearly as much as other CMSes? What could I do to constrain the problem so I wouldn’t get requests to add shopping carts? And this all led me into a long rambling series of thoughts that finally percolated up tonight after a post-strawberry-pie nap…

The upshot is: I have a new plan (based on the old one), a new domain registered, and now I have to just make another prototype.

Hiyakoo CMS + FailCon 2010

Yay! What an amazing day! Thank you to Cass Phillips and Diane Loviglio for an awesome FailCon 2010.

Many months ago they asked if I wanted to participate when I was just starting on the Hiyakoo CMS idea and I just “sure, sign me up”. I didn’t know exactly what I’d be presenting or even if I’d have anything to present. Actually, up until last Friday I was pretty skeptical that I’d have working code at all. But things came together and I was actually able to demo a lot of the core tech to all the people that came by the Hiyakoo table. And by the end of the day I was sooooo tired. I talked with dozens of attendees directly for like 11 hours. What a rush, though.

Now a lot of people have seen a very early version of Hiyakoo CMS in an actual demo-able state. It is a versioned content management system with a focus on mobile and SEO. It is intuitive by its direct click-and-edit or click-and-drag manipulation of things on the page, but it’s also technical in that you can get in and tweak properties in a properties panel. It allows for an immediate WYSIWYG preview in multiple formats: computer, tablet, mobile. It lets you compare multiple versions. It offers infinite site style customization, but uses physical restrictions to guide users into lessons that us web designers have learned over the years. It lets both designers and small business owners work collaboratively together.

Hiyakoo CMS isn’t for everyone: it’s just the super fast and easy CMS for busy people who care about good web design that has a little future-proofing built in. I’m trying to finally integrate the best practices of the web into one handy app that is both easily to grok but has super-powerful tech behind it all.

So I’ve been semi hush-hush about the project except to a few people because honestly I’m still trying to prove out theories. Anyone that knows me directly knows that I love doing visual stuff and anything to do with the web. Even with the advent of mobile apps, the web still remains a place for people to congregate en masse—not everybody is stuck inside their Facebook or Twitter microchannels. The web allows us to discover one another because it’s the common platform for the world. But there’s some big big problems a-brewin’ and I’m trying to solve them.

Theory #1: Small business don’t want the hassle of maintaining a web site; designers aren’t necessarily helping. Biz people really just don’t. They don’t want to build it, they don’t want to maintain it. Many have tried it themselves and created sites which are now completely outdated. And it’s too much of a hassle to get it back up to current technology. That’s where web designers come in. Even a quick pass by a designer is better than none. Still, biz owners need to make small changes but sometimes the designers’ modifications to the base site templates are so extensive that it’s not obvious (to the small biz owner) what needs to be changed.

Theory #2: The mobile web is a mystery. It’s a completely foreign language to most small businesses. They can’t grasp the differences required to view a site on mobile—”but it looks great on my laptop computer?!” It is true that iPads and tablets are mobile devices with higher screen resolution but there are still tech considerations that need to be made.

Theory #3: Eyes bigger than stomach. It’s like having an SUV or a sports car. They really like the idea that you can do anything because the system is so powerful and flexible it can. But the reality is that once you get things set up it’s a pain to change it and you don’t end up using all the extra features anyways. Just because you can configure your template any way you want turns out to be too much freedom. Small businesses end up spending days or weeks editing and tweaking before giving up and then just going with a designer. Then we’re right back to Theory #1 where the site can become too hard to maintain.

So. Enter Hiyakoo CMS.

I’m getting back to basics. I think that simpler is really better for a few reasons:

Restrictions on input don’t mean restrictions on creativity. I think of it more as guiding the user to focus their creativity in certain ways. Hiyakoo limits the number of colors, number of fonts, size of the site, width of the navigation bar, and so on. There are physical restrictions everywhere. That does two things:

1) Users don’t spend forever configuring things. They have enough flexibility to get a lot of personalization done, but it limits the time they’ll waste. I come from a rapid-prototyping background where it’s more important to get something up than nothing. It doesn’t have to be perfect! But it has to be good enough.

2) Physically restricting the things you can do means you actually become more inventive. You realize that in order to achieve a better balance of the thing you have they have to work better together. That means you are forced to think about the layouts, the imagery, and the text. You go more towards creating short, quality-packed text than sprawling diatribes that NO ONE EVER READS. Get to your core message and just say it with brevity.

Mobile is the future. Millions of mobile devices have been sold this year that have the capability to access the web. Plus, netbooks are underpowered and have low screen resolutions. What that means to small business owners is that they need to truly consider how their mobile customers get access to their site. Which means that a system (like Hiyakoo CMS) that tries to nudge small businesses into making mobile-compatible sites really is important.

It’s not just enough to have “responsive web design” that uses CSS to change the presentation based on number of pixels available—consider the iPhone Retina Display which has the same resolution as many small laptops yet is physically smaller by magnitudes than a laptop! You really have to be device-aware and have an application making decisions over what is the best presentation for your content. Remember: small business owners DON’T CARE about the mobile versions, so thusly the mobile version should be automatic. Yep, Hiyakoo CMS does that.

Low cost is important, but free sucks. Free sounds nice at first, but a small business owner wants a stable service that will be around for a long time. I just don’t get how a free business model can actually truly work. Good quality engineering and support requires good people, and good people aren’t free. Hiyakoo CMS isn’t free, but it won’t break the bank. Actually, it will be quite modestly priced considering what you’re getting. However, small businesses do want to at least test-drive the solution. So, creating an account and playing around will be free. Even viewing a public version of their site (for a short while) will be free.

There’s so much more to do and say, but for now it seems like Hiyakoo CMS is definitely on the right track.

Business plans

So, yay. I think I just finished my first pass at my first business plan. I did a search and came up with the SBA.gov guide on doing it. I’m still trying to decide if it is really worthwhile.

Part of my perception of these things is that it’s a bit of an academic exercise. I get the point that a biz plan is meant to help you crystalize the myriad of ideas in your head into a format that you can scrutinize objectively. It gives you a specific goal to shoot for and has language that makes you consider the true essence of your product, what kind of a team will get you there, who is competition, what financial resources will you require, and so on. I can see the value of this.

On the other hand, things change all of the time. I have been with several startups since 2006 now and my experience says that a biz plan is kinda overkill. I think Guy Kawasaki’s 10/20/30 rule is probably the better format. It’s also really short, so that when you need to update things you can easily do so w/out having to edit a lot of text.

What makes easy things … easy?

I had a thought this morning: “easy” things are easy because they’re familiar.

Do you remember the first time you tried to drive a car? It was a nightmare! The coordination between your hands and feet, reading traffic, getting used to looking in the mirrors. And now you do it effortlessly: you jump in, tune the radio, adjust the climate controls … all while being distracted by talking on your cell phone! The task of driving from home to work involves hundreds of individual steps and requires constant vigilance, but I can’t think of anyone I know that says “driving to work is too hard, so I’m not going in today.”

I went on the Net this morning to look around for an article to quote:

On the surface, easy is what we already know how to do or that which takes little mental or physical effort.

The Difference Between Easy And Difficult, Alex Licherman, M.D.

I’ve been building a new piece of software which is aimed at making a very complex task really easy: building a website. I did a Google search for “website builder easy” and got back 4.1 million hits. You would think if websites were so easy to build that one of these millions of links would actually do the trick. But I don’t think any have hit the mark quite yet.

What makes building a website “easy”?

I’ve been keeping a running list of hosted services and what easy really seems to have boiled down to is one trick: what you see is what you get. Sorry, WYSIWYG isn’t anything new. Yes, you can “drag and drop” all of these “modules” or “widgets” onto your site, but does that really make it “easy”? I argue it does not. What it does is leverage your innate ability to grab a colorful block and position it on the floor in front of you. Even after you put this module/widget on your site canvas you still have to decide how to style it, what to write in it, and how to arrange it so it complements the other modules/widgets on the page. Next you need to repeat this process for the umpteen pages on your site. Sure, templates bootstrap you by giving you graphics and layouts, but you still need to customize them all to your liking. Oh, and let’s not forget what I consider to be the real evil of having a website: maintenance.

That’s right. You spend days/weeks tweaking your website so that it’s beautiful, shiny, modern, flashy, ________ (insert other cool adjective) and then you release it to the world. … time passes … Then something needs to be updated. Then all those glassy reflections on your images start to look dated so you want to go with the new design style hotness but there’s oh-so-many pages and icons and Adobe Flash files you need to update… The cost of owning and maintaining your site just went from trivial to white-hot painful. So “easy” really wasn’t, eh?

I think the easiest hosted website to maintain in my opinion isn’t even really a web site: it’s your Twitter account. You pick some colors, you change your background image, and that’s it. This means you focus on your content. And you change your mind about the style later then it’s so simple. Plus, since you have that muscle memory of having gone to the Settings page -> Design tab, it’s easy for you!

What I’m building is something along these lines. For site owners it will make choosing your style so trivial that changing your mind about something will be effortless. The site editor will require you to learn only a couple of interface navigation concepts and only a handful of terms. Instead of giving you free reign over any number of layouts and templates, there is only really one. Instead of creating deeply-nested site hierarchies, it’s completely shallow. Instead of allowing you to do everything you could ever want to do (which in turn necessitates a complex editor), you get to only do a few things but you’ll do them so well.

More importantly, let’s consider the end-user experience: what will your customers see?

Good user interfaces on the web (or any device) have consistent, predictable interfaces. (I’m not the only one with this view.) Users will only need to get used to one visual layout, which means the organization of the rest of your site is also predictable. This in no way means that your site will be boring! It simply means that your design will have a higher degree of synergy. And synergy leads to familiarity. And familiarity leads right back to Easy St.

You win. Your viewers win. Even your graphic designer that helps you with your site wins.

This is my hope. Let’s see if my bet is right?

DOH.

Here I was ready to unleash a new web app to the world that I’ve been working on for the last few days but just as I was about to deploy it I get the bad news: the way I’ve created the app isn’t going to work. Apparently my choice of noSQL databases means that it’s really hard to deploy on a VPS, at least the one I’m planning to use as my host.

It would seem that one gotcha of using MongoDB is that it uses a memory cache that can grow to the size of your VPS’s allocated RAM. I’m told that if instead I had a Linux box all to myself and I just ran MongoDB on it that when the max memory was reached the operating system would handle paging things to disk. However, in the VZ VPS world MongoDB would simply halt and refuse to take any more data.

I’m not exactly sure under what circumstance this occurs—a brief web search didn’t turn up anything specific. My guess is that if you have MongoDB configured to flush to disk every n minutes, then up to that time if you’re creating/modifying lots of data then that’s where the database could easily balloon to many GBs.

So unfortunately I can’t deploy today. I even tried recoding things for Heroku but it would seem they have a 16MB limit right now. (C’mon. 16MB is nothing!) Plus Heroku doesn’t handle submodules in the repo, and I even tried making a custom deployment script that prepped everything for upload.

But I am undeterred. The new project WILL go live soon. I just have to switch back to MySQL and load in some more data. Ugh.

Ticket tracking and SCM, even for a team of one

On one of my newer projects I’m a development and project management team of one. Still, I use a ticket tracking system like Redmine and Git for many reasons.

I like being able to enter a feature or a bug into the ticket tracker to make sure I get back to those issues later. I could use a spreadsheet, a notepad, or something like Remember The Milk but Redmine has the big advantage of integrating with SCM systems.

And I definitely use SCM all of the time. I’ve run into way too many cases where I’ve made a change I regret or I just need to group changes together. Something like Git works perfectly for this. And when I commit code it also reflects in Redmine what I’ve done, when I’ve done it.

Plus there’s a more important thing: what if my development team grows from one person to more than just me? If I’ve been using these systems all the time then adding a new code author or a project manager is really easy. I’m ready to scale!

Always take the harder road

I used to be really complacent with just showing up for work then going home after. I’d hang out with friends, play video games, go to movies, and so on. The job would be OK, sometimes a little challenging. But more often than not things just became routine. And after a few years of this it became boring. Once in a while I could be creative and do something really cool, but I was stuck with aging technologies and spent a significant amount of time dealing more with politics than being productive. Oh, and being on 24/7 pager watch for a week. Yeah, I don’t miss the 2:30 AM emergency phone bridge meetings.

Then I left all of that and putzed around a while, finally landing myself at a startup on the Peninsula. Things got interesting right about then: rapid development, lots of new tech to digest, the wearing of a lot of hats, really close contact with management. When that job ended I floated to another startup in SF. More rapid development, LOTS of JavaScript, really smart people, very close to the core business. That job, too, ended and now I’m doing a startup with a really energetic guy. Here I’m wearing just about every single hat, although more often it’s a technical one. Now, I *am* the core business.

My trend has been away from big, stable companies to every-day-is-a-new-challenge startups. I’ve lost a LOT of sleep in the past 3 years, and it looks like it’s only going to get worse. But what keeps me going is not necessarily the promise of the big financial payoff, rather it’s the big intellectual payoff.

I want to be challenged. I crave finding creative solutions to, well, everything. This is why I want to be an entrepreneur and a bleeding-edge engineer. One of my core beliefs is that everything can always be improved. Sure, new technologies and websites can be invented, but also there’s so many people out there that just need help—the problems aren’t always technical in nature. Every day I’m pushing myself, and every day I learn something new. Maybe that knowledge or skill isn’t applicable right now, but one day it will be.

I think I’ve always been like this—driven, that is. I tried to do as many sports as I could in school, took up a new instrument every year or so, did as many clubs as time would allow, desktop-published my homework, or soak up news on the Internet—which really didn’t exist until I was in college. Then I entered the workforce for a big company and all of that challenge seemed to stall out. I wanted to run faster on some things but ran into walls of procedure and politics. When resources got tight I spent more and more time just doing routine maintenance. That was stifling to no end. The point is, I was happiest when I was pushing myself.

Pushing means things are difficult. It’s like I used to think when I was out running up a steep trail on the hot, dry hillsides of Los Altos: you overcome the challenges and you get better. Learning Ruby and Rails has been hard, but I know the next time I have to do these things it’ll be easier. Working hard means learning and innovating, not just spinning your wheel faster.

The current project requires me to pull on all of those skills and knowledge that I’ve accumulated thus far … how to set up and administer a web server, how to install the development environment, how to write reusable code, how to rapid prototype on paper or Fireworks and turn that into HTML, how to write webpages that support IE6 or not, how to create graphics and Flash in a layered fashion, how to write MIDI-sequenced music, SEO, how to administer databases, how to create Word help guides, how to design/print/cut business cards, how to get postcards printed at a printshop, how to be nice to spam filters, how to pitch the business plan, how to give a presentation, how to choose decent lighting for photos, how to help users, how to interpret what Management says and make a useful product … and there’s more things to be learned.

So always take the hard road.

Hello 2009!

Hello 2009! It’s only a few days into the new year and the work is already piling up!

Development on iPhone programs is on hold and the other website I was working on is on hold. Instead I’ve been doing contracting for a few different people, doing some volunteer website work, and trying to start a company with another person. The current challenge is finding a web host that can meet our particular needs.