rlucas.net: The Next Generation Rotating Header Image

Everything Old Is New Again: Innovation to Adoption Lag

There are a lot of problems in software that aren’t solved well in a ubiquitous product (think PIMs, Personal Information Managers; they all suck royally despite everybody’s best efforts, and the OSAF Chandler project has taken years trying to redesign the very concept, with little to show for it to date). But there are precious few problems that haven’t been solved at all.

In fact, a ton of things that are being held up these days as “innovations” are rehashes of old concepts from the 90s, or the 80s, or sometimes even the 70s. Today this came into sharp focus when I saw this bit from a circa 1999 document on the Semantic Web by the Right Reverend Tim Berners-Lee. Here he asks, then answers, a question:

<blockquote> Surely all first-order or higher-order predicate caluculus based systems (such as KIF) have failed historically to have wide impact?

The same was true of hypertext systems between 1970 and 1990, ie before the Web. Indeed, the same objection was raised to the Web, and the same reasons apply for pressing on with the dream. </blockquote>

Then, while searching for some theory on append-only databases (such as would be used in a revision-control system), I came across this 1994 piece on “collaborative filtering.” That report in turn points to earlier work on “Information Tapestry” from the early 1990s.

So: 1970-1990, hypertext exists and is studied in CS departments. 1995, Netscape IPO. Early 1990s, collaborative filtering exists and is studied in research labs. 2006-2007, rise of Digg and Delicious.

I think there’s a very strong case to be made that VCs should stop looking for “innovation,” per se, and start looking for 10-20 year old CS masters’ theses that touch on an emerging market space…

The Magical Coefficient of Motorcycling

There are a few things in Nature that seem like magical numbers. One is e. Another is the Golden Ratio. Another more applied version is 4 degrees C, the temperature at which water has its maximum density (thereby guaranteeing the action of thermal inversion, which prevents all of life from going extinct every few thousand years during an Ice Age).

There’s one for the world of motorcycling as well. But it’s more boring if I just tell you want it is, so here’s a bit of setup:

Think about flying down the freeway at 60 or 70 MPH. Sure, you are ATGATT (all the gear, all the time — no skin below the chin) and are helmeted, but doesn’t it seem crazy not to wear a seatbelt or something? (This sentiment dates me as being of the generation that grew up with mandatory seatbelt laws.) How the hell can you hold on to something going 70 MPH?

Well, it’s only sort of crazy. It turns out that holding on to (or rather, not falling off of) something going 70 MPH is a damn sight easier when you’re going 70 MPH along the same vector. What really matters is the acceleration involved. You at 0 MPH, bike at 70 MPH = bad news; you and bike both at 70 MPH = OK.

But, you may counter, how the heck can you get to 70 MPH? Isn’t that quite an acceleration, one that we usually encounter while strapped in with our backs against a DOT-approved seat?

Well, yes. But your acceleration is really bounded by one thing: the friction of your tires on the pavement. (You can have a stronger engine or tighter brakes, but they only are effective to the limit of your tires’ grip.) As it turns out, the natural properties of rubber make it so that you get about 1.1 g of traction on dry pavement. Torque your wheel faster, you spin out (or slow it more than that, you’l skid). Hence, as long as the bike isn’t cheating — starting or stopping using something besides the tires (like a rocket JATO or a brick wall) — you’re basically limited to applying about 1.0 g.

And guess what? Human bodies and minds happen to be really good at dealing with 1.0 g. In fact, you might say that the whole of bipedalism is just drill for how not to tumble against the pull of 1.0 g. So, from the day you first pulled yourself up as an infant, you were practicing the skill needed to hang onto the handlebars during a 1.0 g acceleration.

And that, my friends, is the magical coefficient of motorcycling: the traction of rubber on dry pavement. And that is why it’s maybe not so crazy to go 70 MPH without a seatbelt after all.

(Pace, engineers: I know that my explanation is oversimplified, but it’s roughly right.)

(And to the safety-concerned: your biggest concerns, of course, are exogenous to the question of traction: it’s when you do hit a brick wall, or when you start testing the friction of leather on pavement, that you really get hurt.)

Bubble Factors: Real Change, Easy Credit, and Self-Interested Lies

Look at “Bubble 1.0″ (as it’s known in the relatively young tech industry: the 1997-2000 tech-media-telecom bubble and the general IPO / equity bubble that went along with it).

1. A real change occurred — the uptake of Internet technology — and created some initial successes (think Netscape IPO). This got folks thinking about how to turn a profit, lighting aflame the animal spirits, and buoyed the mood of the markets.

2. Accommodative monetary policy made money cheap, and in combination with the buoyant mood and the animal spirits, led to compressed risk premia in the capital markets. Think insatiable demand for IPOs, and Fed rate-slashing due to LTCM in 1998.

3. Sensing opportunity (and driven to madness by their proximity to money with no ability to make it themselves), those in charge of telling the truth, like auditors, started fudging things in order to keep the good times rolling and to get a slice o’ Cheddar for themselves. Think Arthur Andersen and Enron.

Now, let’s take a look at Housing in 2002-2007.

1. A real change occurred. Think a palpable change in national mood and priorities post-bubble and post-9/11. In the realm of personal finance, we saw an aversion to “paper” assets and a move toward the real and tangible. To many people, this meant plowing what was left from equities into real estate, which had already been enjoying decent returns from the wealth effect of Bubble 1.0.

2. Accommodative credit. Think not only macro level, Fed funds rate stuff, but no-doc loans, NINJA (no income, no job or assets) loans, ARMs, option ARMs, interest-only loans, etc.

3. The truth-tellers started lying. Think the house appraisers here who were being incentivized to keep the party going at risk of losing business from the real estate agents, and the mortgage “officers” who were effectively the “buyer apraisers,” incentivized to keep the party going directly due to fee structures. Nobody in either group called foul on the prices or the creditworthiness in question.

This formula works pretty good, although it’s loose enough that its predictive power is probably fairly weak (better for validating a thesis than for scouting out a new bubble in progress). Any other ideas as to bubbles where we can look for these factors?

Textmate Cheat Sheet

  Option+PgDn    Page down while moving cursor (caret)  Esc            Autocomplete  Command+/      Comment/Uncomment (Ruby, at least)  Ctrl+Command+V Paste without reindenting   

VCs and the Naughty Bits

I spotted a piece by Paul Kedrosky today during a blog-feeds-catchup-session where Paul talks about a sort of “(minimum) two degree of separation” rule that VCs maintain between themselves and the sex industry. (Quotes above for my words, not his.) In other words: benefiting from infrastructure, transport, payment mechanisms — cool. Having fleshy bits linked to from the portfolio companies page — not cool.

This reminds me of an early experience I had at Voyager. We were looking at a company that was building an online search / social media app. They talked about people using it for various applications — consumer, enterprise, small business, blah blah blah. We were just about to the end of the pitch, when I asked pretty straightforwardly: “So, what’s the sex angle here? Is there an application in dating or porn?”

The room went silent.

I pushed on, oblivious to the mood that had just chilled like a shot of Jaeger down an ice luge. “You know, like VHS, or modems for BBSes, or early adoption of Web marketing tricks like affiliate programs and popups,” I articulated despite the intrusion of my foot now rapidly entering my oral cavity. “Is there a strategy for accelerating adoption around that content?”

The founders were visibly uncomfortable. Mercifully, my boss was not pissed, just bemused. “I … I guess people could use it for other things, too,” said one of the founders, finally. Handshakes all around, a quick note on our investment process, and we’ll get back to you after next week’s partner meeting, ciao for now.

Oops. Back at the office, this is addressed.

“Randall, in the venture business, we have certain things we don’t talk about, and certain things we don’t invest in, due to a number of reasons.”

At the time, I’m thinking: OK, VCs are pillars of the community, have to show up at the Opera, at the charity events, at the B-school reunions, and can’t be branded pornographer or such. I filed this away under the “shit not to talk about, Einstein” filter, along with ever admitting to listening to Journey, or denigrating tattoos while speaking to anyone whom you’ve never seen fully naked.

But now, Paul Kedrosky gives me a flashback and with a key piece of insight. It’s a follow the money moment: “… until the venture business is funded by groups other than pension funds, trusts, and endowments (ahem), the likelihood of mainstream VCs ever getting beyond flirtations [[with the sex business]] is vanishingly small.” Yep, follow the money. The paymasters here are the Prudent Men, the real stodgy guys, the Trustees and the Chairmen and the Stewards and the Overseers.

And frankly, this is probably a good thing. It’s a little like the Senate. You don’t want the country entirely run by a bunch of pasty old white dudes, most all millionaires, 60 years old and who won’t be fired for 12 years (on average), and who probably still think that Kudzu and the missile gap are our biggest national problems. But you don’t want a bunch of whippersnappers on the make driving all your big decisions without recourse to the accumulated wisdom of years past.

The real test will be if one of the trendsetter endowment funds like Harvard or Yale green lights a VC or PE investment that targets the sin sectors. If that ever happens, then the VC business will start to get a lot more (directly) involved in the naughty bits…

Liquidation Preferences: A Response to Leo Dirac

In a recent blog entry, Leo Parker Dirac poses the question of the fairness of liquidation preferences in VC financings of startups. He’s going to be delivering a lightning talk based on it tonight at Ignite Seattle.

(To those of you who don’t know, liquidation preferences, or prefs, are usually a multiple of invested dollars that a VC gets out first, before anyone else is paid. This is because if you take $10 M from a VC for half your company, then shut down the company one second after depositing the VC’s check, he would only have a claim on half of it, thereby snookering him out of $5 M. To avoid this outcome, and due to our general greed, we VCs like to ask for at least a 1.0x preference, meaning that you have no incentive to shut down the company until you’ve grown it to something more than our investment dollars.)

His conclusion seems to be that liq prefs can be fair if transparently communicated to all parties. Of course, this implies that sometimes, details of prefs are not communicated clearly.

How can this be? I’ve seen many tens of term sheets, and never once have I seen one that uses invisible ink. Neither have I ever seen a term sheet that has a clause invalidating it if you show it to your lawyer. In short, there is never a case where an entrepreneur isn’t reasonably informed about prefs.

Let me construct an example. Say that you’re a first-time entrepreneur, and that you don’t have anyone on your exec team, nor on your board of directors, nor among your existing investors, who’s ever seen a term sheet before. (I was in that spot starting my first company back in 2000, by the way.) And, let’s say, you get hold of a term sheet that casually throws out there something like “holders of Series A shall be entitled to an amount per-share equal to two times the per-share price…” and you don’t know what it means.

Well, one thing I can absolutely promise you is that no VC is trying to sneak one by you for a shot at 2x his money. A VC investment just takes way too much heartache and worry and effort — not to mention opportunity-cost of not investing in the billion-dollar blockbuster every VC’s looking for — for a VC to fuck around with taking a chance at cheating you out of a couple million (remember, he has to give all but 20% of that profit to his investors, and split that 20% through some formula of his partnership, so even if he cheats you out of $5 M he’s not going to deposit more than a few hundred $k in the bank, and that’s at risk of losing his several hundred $k per year sinecure for a GP of a decent-sized fund).

Another thing I can promise you is that no VC ever wants you to sign anything without reading it and having your lawyer read it twice. Think about this one for just a second: I’m about to wire you enough money to buy twenty or thirty Porsches, based on the notion that you’re a brilliant businessman who’s going to make us both rich. Do I want to give thirty Porsches worth of cold, hard cash to the kind of guy who signs deals without reading the contract??? Seriously: I want you to be the slickest of salesmen, the toughest of negotiators, and the most diligent of dealmakers (not to mention a prodigious engineer, a revered leader, and a master marketer). VCs do not want to give money to sloppy suckers who can’t be bothered to read and understand a term sheet — including seeking savvy legal counsel when appropriate!

Now, having said all this, there are at least two cases where Leo’s thinking really does apply to the question of liq prefs. (It shows of Leo that his thinking on the matter of prefs is mostly abstract, that he does not mention either of these two cases.)

The first case is where you are dealing with a fake VC. A real VC is someone who spends full time managing a fund of committed capital from one or more arm’s length investors, which capital amounts to at least, say, $10 M per general partner and is entirely meant to be invested in growth companies for the purpose of financial returns primarily via capital appreciation. A fake VC is anyone else who calls himself a VC without pointing out the major differences with the above. And a fake VC has God-knows-what sort of motivation and may well want to swindle you out of a preference multiple.

Your uncle who owns a chain of bagel shops is not a VC. A hedge fund is not a VC. A dude who claims to represent a group of “anonymous Asian industrial families” is not a VC. Anyone who is keeping his day job is not a VC. Real estate guys are not VCs. Note that this doesn’t mean they are bad people (unless they pretend to be VCs, in which case they are fake VCs). It just means that the ground rules that you can understand all VCs to play by don’t apply.

If you’re not dealing with a real VC, read everything three times and have your lawyer read it six.

The second case is in follow-on rounds where the company is in a distressed situation. Everything Leo talks about (and everything I assume in the first part of this post) is about the moment before you take your first VC investment: do I take this capital, with its strings attached, for a shot at building my dream? The alternative there is to simply walk away, and go back to working at Microsoft. But once you’re hot and heavy with a company, once you’ve raised money, promised the moon and the stars to your friends and family, bamboozled the VCs into funding you, alienated all your social contacts and exacerbated your RSI, hired fantastic people and worked them to exhaustion and made them love you enough to drink the Kool-aid, extended commitments based on your word and your honor to customers and suppliers — only to find that revenues aren’t ramping up fast enough and you need cash — OK, now you are officially up against a wall. And precisely now is when you will be addled from overwork, and adrenalin-high, and blinded with the urgency of your need — and when the sharks will smell blood.

That is when you will get the predatory term sheet.

If Leo wants to do entrepreneurs (and VCs) a favor, he should take a hard look at what happens then: when you’ve got a company that still holds promise, but is in a distressed situation and needs capital for its very survival. Exploring those moral complexities is a lot more interesting than the sort of clean-room, game-theoretical chatter about whether one accepts term X on a first round of capital.

VC Career Snippets: "The Wormhole"

This is the first of a series of “snippets” about getting a job in VC. I get asked about this approximately weekly, so I am going to try and do a highlights reel of things I tell people or thoughts I come up with on the topic.

In a nutshell, VC is this weird parallel universe into which there are very few wormholes. (To start a career in VC) It helps to distort the space-time continuum with an extremely concentrated mass of money that you already have.

Swik Has Jumped the Shark

Seattle-based Open Source startup Sourcelabs put together the Swik.net wiki a year or two ago. They seeded it with some links of moderate usefulness, and for a brief time, it was a decent, if hit-or-miss, way to find information about an open source project or tool that you were considering using.

No more. Not only are most of the pages I’m finding on Swik these days simply a one-link screen-scrape to the actually interesting page (which often ranks higher in Google alone, anyhow), but Swik has committed the cardinal sin of infovoria: playing audio that automatically starts on page load.

(They do this by means of an auto-starting video advertisement that spams up the top bit of the page. Not quite as egregious as a MIDI object, but every bit as annoying.)

Unbelievable. I thought we’d gotten past this with the turn of the millennium. But everything old, it seems, is new again. Swik, however, now gets the same mental category as “About.com,” namely, ad-filled, nearly unusable results not to click when they appear in a web search.

Spry VPS Mixed Experience Report

I’ve been using an “el cheapo,” $15 / month, 64M RAM Debian GNU/Linux VPS from Spry for a couple weeks now. Some things to note:

  • You get X amount of RAM with “burstable” extra ram, but you’re not going to get any from the burst. Everyone else is using it.
  • There is NO SWAP as far as I can tell. When you hit 63.9M of RAM, processes start segfaulting and blowing up.
  • free and top will lie to you. ps -aux seems to tell the truth.
  • You really need to check /proc/user_beancounters as root to get the real number of (4k) pages of memory used, and the number of faults, if you’re curious.

Too early for a verdict. But don’t count on being able to run the same stuff on a 64M Spry VPS as you would on a 64M box with a half-gig of swap (grinding its way through but eventually getting the job done).

Relational Database Problems

Many of these problems arise because RDBMSs are designed typically with the conceit of being the sources of truth within the organization (e.g. invoice #1234 exists because the database says so), but are often used to reflect external truths about the world, which are input messily and which themselves are often shifting or subject to change in ways not contemplated by the schema.

I. The entity deduplication problem.

Alice is entering information about companies, and creates a record #1001 for “Acme Widgets.” She then adds a bunch of information, including relating other tables to Company #1001. For example, she may put in a press clipping about Acme Widgets, which gets linked by a link table to Company.id==1001.

Then, Bob comes along entering information about companies, and creates a record #1234 for “Acme Widget Corporation.” He adds stuff, and includes a different press clipping, which gets linked to Company.id==1234.

Later, Charlie arrives, and notices that there are two records starting with “Acme.” He investigates a bit, and discovers that “Acme Widget Corporation” is the full legal name of the company that is familiarly called “Acme Widgets.”

How can Charlie cause the database only to reflect a single Acme which is associated correctly with both press clippings?

II. The undo problem.

I do some stuff. Then I change some stuff. Then later, I want to see how it was before I changed it. Tough luck.

III. Bitemporality

Let’s include financials on our companies! Acme revenues are $12 M. (wait a year.) Now Acme revenues are $15 M. But wait: we now need a couple of slots for revenues. Oh, ok, a revenue report is associated with a year. Acme 2006 revenues were $12 M, 2007 revenues were $15 M. Wait. I was wrong. Acme 2006 revenues were $9 M in reality. OK, update that. Now the boss calls up and wants to know who it was that we told the wrong 2006 number to. But we can’t, since we don’t know what we thought we knew when we thought we knew it.

(In fairness, bitemporality is somewhat easier than the other ones; you just double-time-stamp everything. But it’s still a pain in the ass.)

IV. The incomplete multi-table entity problem

This one is not really an RDBMS problem so much as a Web applicaiton architecture problem.

Doug wants to create a record in our database — let’s say, a “publication.” The publication must have an “editor” (n:1) and at least one “author” (n:m, m >= 1). Doug gets to inserting the publication, but is stopped because it has a null editor_id, violating the editor constraint. D’oh! OK, we can work around this: good databases permit deferring of constraints until the end of a transaction. But in order to make that work with your application, you now must tightly couple the transactionality between the RDBMS and the server part of the Web application.

Let’s try again with Doug. He inserts the publication, no sweat, and now can insert an editor. Then, he adds some other stuff, like some authors. (Maybe Doug is using an AJAX-y Web front-end that lets him add new authors on the fly without going to a new “screen,” or maybe he has to navigate between modal “screens” to do this.) Because he’s added multiple different entities (a publication, an editor, some authors), he gets to feeling that what he’s done is already written to the database. He leaves without hitting save. Do’oh! Two things have now happened: first, the entire graph of all the entities he’s added is in limbo, and second, the server part of the Web app is holding open a (possibly scarce) connection to the RDBMS (which may or may not, depending on how fancy the example gets, be holding locks with a SELECT FOR UPDATE…).

The first sub-problem — the limbo — seems not that bad, because Doug is used to losing all his data when he forgets to hit “save” on a desktop application, so he’s fairly well trained and will avoid this. But if the program is “DRY” (Don’t Repeat Yourself), and especially if it had modal “screens,” Doug probably hit “save” or “update” or “submit” several times on interfaces that look like the normal (non-multi-table-entity graph) ones in order to add his multiple required entities (editors and authors). Therefore, Doug has a not unreasonable expectation that he’s done his part for saving, based on the fact that when he edits or creates an author entity in isolation, he uses that same workflow and it saves OK.

The second sub-problem — the RDBMS connection — is sort of more pernicious, because now Doug isn’t just losing (or jeopardizing) data he though he’d saved, but because he’s potentially contributing to a denial or degradation of service for all users. This is sort of an artifact of the way that DB connection pooling evolved from the mid-90s to today. Traditionally, DB connections have been scarce and costly to set up (network IO in addition to whatever socket / semaphore / locks / whatever had to be written to disk). Therefore, the widespread practice evolved in Web application design to use connection pooling — where some subsystem in the server layer makes a bunch of connections to the database, and then does fast handoffs of DB connections to application requests, freeing them up when each request is done. That way, you can run, say, 300 near-simultaneous requests with, say, 30 database connections.

Of course, if you’re pooling database connections, you pretty much have to run your entire transaction, succeed or fail, within the space of one application request (hopefully a sub-500ms affair), since transactions bind to database connections, but connections don’t bind to end-clients (stateless HTTP again). You can try and bind the DB connection to a particular client’s cookie- or token-identified session (like Seaside does, I think), but then you lose out on the ostensible benefits of pooling — now you need 300 RDBMS connections for your 300 clients, and your DB machine is choked. What’s more, if Doug leaves his transaction open, and you don’t fairly quickly time it out and kill it, you could end up needing more than 300 DB connections for your 300 clients, because you also have 300 old “Dougs” who’ve left stale transactions open — and now your DB machine is crashed.

I will update this post periodically with other relational database problems, and, I hope, solutions.