Category Archives: Work

Yahoo Pulls Plug on Shopping API

I’ve been getting a few pings from folks regarding Yahoo’s plans to transition its Shopping property to a third party. My team at Yahoo launched the Shopping API in August 2005 (although I don’t work for Yahoo anymore so I can’t provide insider answers on what’s going on here).

Since the new partner service (PriceGrabber) apparently doesn’t have a public API, that essentially kills this API. Killing an API is a very big deal, not just because it kills applications — it kills your credibility as a platform provider. I’d be very reticent about adopting any technology integration provided by Yahoo until things settle down over there. That said, there would have been a potentially interesting opportunity for PriceGrabber to provide a compatible API and make the developer switchover fairly seamless. It’s anyone’s guess as to why they elected to not do that.

Ben Metcalfe has some “cautionary” words which I think describes Yahoo’s lack of developer/platform strategy pretty well. The company’s developer releases over the past few years have mostly fallen flat for a variety of reasons (lack of business value for third parties being foremost, I would say, although there’s also a very unfortunate lack of organizational focus and unclear articulation of product strategy and tactics at work here as well). It was not clear to me that enough of Yahoo’s execs valued third-party developers in 2006 when I left the company, but it’s quite clear that they value third-party developers and open integration even less today.

Crowdsourced document analysis and MP expenses

My former Yahoo! colleague Simon Willison is doing some amazing work setting up near-instant crowdsourced content analysis systems for government documents in the UK. He and his team are developing vital knowledge about what works and what doesn’t in these kinds of systems, and he’s shared it on his blog:

News-based crowdsourcing projects of this nature are both challenging and an enormous amount of fun. For the best chances of success, be sure to ask the right question, ensure user contributions are rewarded, expose as much data as possible and make the “next thing to review” behaviour as solid possible. I’m looking forward to the next opportunity to apply these lessons, although at this point I really hope it involves something other than MPs’ expenses.

Who is doing this kind of thing in the US, I wonder?

Link: Crowdsourced document analysis and MP expenses.

Because Russian Money is Clearly Worth Less, Somehow

Link: Russian Facebook Investor Adds Stake in Zynga –

Digital Sky Technologies, or D.S.T., an investment firm with offices in Moscow and London, is leading a group that is buying a $180 million stake in Zynga, a fast-growing San Francisco company whose online games, like FarmVille, Café World and Mafia Wars, are extremely popular on Facebook.

An unusual investment structure, by an unorthodox foreign investor, might shake up many of Silicon Valley’s traditional venture capital and private equity firms, which are losing out on another promising Internet opportunity.

If the Times reporters, Brad Stone and Claire Cain Miller, had bothered to talk to more than one Silicon Valley investors for this story, they would have learned that startups in the Facebook ecosystem are all but radioactive to Valley investors today. Of course Kleiner Perkins is going to say they’re an amazing company, etc., but if they didn’t pull the trigger on an investment, it means they didn’t like what they see (and Kleiner probably isn’t a terrific litmus test for investors

It’s definitely not the case that when an investor passes on an opportunity, that investor is  “losing out.” “Losing out” is the opposite of “winning”; DST hasn’t won yet. Do you feel like you’re “losing out” every time a bus passes you in the street because you could have been on it?

It’s also a little weird the way they characterize the investor in this deal. They raise the fright wig of Russians, criminals, and “unusual investment structures” without really going into what that means. If that’s the concern here, then why don’t you name the “criminal” investor until 18 paragraphs into the story?

How Not To Describe Your Platform

Link: PayPal Taps the Developer Community to Build Next-Gen Payment Apps

We haven’t actually released new APIs; what we have done is that we announced a set of APIs on November 3rd, which was our adaptive suite. Adaptive suite APIs include adaptive payments and adaptive accounts. Then we also announced our authentications and permissions API. What we had done at Innovate was to make those APIs exclusive — adaptive account, authentications and permissions, exclusive to the attendees of the conference. We did a full-on release for those APIs on November 3rd when we announced the platform. But we’ve had an overwhelming response from the community where people where saying, “You’re limiting us from actually using these APIs. Is there any ability for us to get these early on rather than to wait until 2010?” Based on the feedback, based on what people were looking for, we decided to open it up to everyone now, instead of sometime in 2010.

This quote is from Naveed Anwar of PayPal. It’s supposed to shed some light on the new PalPal platform. But I feel like I’ve been following the reboot of the PayPal platform for a month and a half now, and I’m still not sure I understand just how it’s supposed to help me. Apparently there is some conference that I was supposed to have attended? And if there are no new APIs, what has changed? Adaptive suite? What is that?

It’s not really possible to get the information you’d want from their web site, which at the moment is dominated by information about a new developer contest. (Developer contests are problematic on their own, as I’ve written about here previously.)

I’m really concerned that PayPal, like Yahoo and others, is going to miss a huge opportunity here by failing to articulate its vision in a straightforward way. (On second thought, screw the vision. Maybe just focus on saying what your products and services do on your web page first.)

Technology Platform Content Strategies

A frequently-overlooked aspect of managing a platform technology product is creating a sensible content plan and executing on it effectively. This is not what you’d call a sexy topic: In a lot of ways, technical content is to a platform as horse manure is to a farm. Very few people get excited about working with it, but if you don’t bring yourself to do it, things won’t grow as fast.

Having produced content to support a variety of technology platforms for more than a decade, I’ve come up with a few very general strategies for how to approach this.

The first strategy is Identify and Develop Reference and Narrative Documentation. Reference documentation is the bare-metal documentation that anyone would need to use your platform. This is the absolute minimum you can do in terms of documentation and content — without it, nobody will be able to figure out what you’re doing. Narrative documentation is far less dense than reference documentation; a good example of the difference is the Java tutorial for exceptions versus the reference documentation for the Exception class. Typically, reference documentation is delivered by your engineering team; narrative documentation is provided by technical documentation specialists.

The second strategy is Build Content Out To the Last Mile. It’s not enough to run an automated documentation generator on your source code and upload it to a web server, or even to set up a wiki and declare victory. You have to create technical content that is going to speak to software developers where they live, and generally that means writing to some kind of programming language. The languages you target will differ depending on several factors, including the programmability model of your platform, the amount of resources you have to devote to content, and the expected number of developers using each language you want to address.

Some examples: Let’s say you’re Palm and you want lots of developers to adopt WebOS. You have something of a head start here because you’re leveraging a single, commonly-used language (Javascript) and other web-centric technologies that a lot of web developers use. But there’s still a Last Mile for you: you’ve got an SDK, a Javascript framework, and a bunch of paradigms that are unique to mobile development.

On the other hand, if you’re a web services platform or some sort of back-end product, your Last Mile strategy is a little more complicated because you’re not tied to any particular programming language. That means that your Last Mile is the all programming languages used by your current and prospective developers, multiplied by the different pieces of narrative content that addresses each of those languages. I like to arrange this in a grid, like this:

Language Getting Started Guide Authentication Tutorial SDK Others
Java Done TODO Done
PHP Done TODO Done
C/C++ Won’t Do Won’t Do Won’t Do
Python Won’t Do Won’t Do Won’t Do
Ruby Won’t Do Won’t Do Won’t Do
Others Won’t Do Won’t Do Won’t Do

Making this into a grid turns it into a handy two-dimensional task list. It also informs where you devote resources (and potentially how you hire people; when we realized that PHP was important at eBay in 2004, and we had exactly zero PHP content, I hired a PHP guy pronto).

There’s a lot here, but the good news is, you only have to fill in each cell in the grid once. To manage resources, you are also likely to draw a horizontal line somewhere on the grid; languages below that line don’t get direct support from you (although you can graciously accept support from the community for edge-case languages that you can’t or don’t want to support directly). But the number of languages that you choose to support should exceed one (this was a serious problem in Facebook’s platform content until very recently).

Also, as you add major new features to your platform, you will of course add new columns to the content grid so that you cover your new features in all the languages that matter.

All that said, it’s also possible (even common) for platform technology organizations to over-plan their content strategy. This isn’t quite the same as what software architects refer to as “analysis paralysis,” but it feels the same. When you hear things like “we want to make sure we specify exactly what content we’re planning on publishing before we create a system to manage it” or “we don’t want to publish anything until every piece of content is ready,” these are signs of an over-planned content strategy. Best in this situation to develop the content you have, get it out there as soon as possible any way you can, and iterate on it frequently in collaboration with the developers who are using your platform.

This process supports a few tenets of the Platform Manifesto: actively managing platforms, nurturing communities of users, and providing self-service access.

Comparative Pricing for Virtual Hosting Providers

Rackspace just launched a new suite of cloud computing (really virtualized hosting) products. We use a bunch of these products from different companies. We also have a consulting practice dedicated to Amazon’s EC2 offering, so I wanted to take a closer look at how the different offerings stack up in terms of price and features. I also compared the new Rackspace offering to Slicehost, which we’ve used for a while and are very happy with. (Slicehost was acquired by Rackspace in October of last year, so they’re the same company, but very different products. It looks like they’re continuing to run Slicehost as an independent brand, which I think is smart.)

Anyway, here’s my comparison. Bear in mind that this is not an apples/apples comparison (the details are below):

Rackspace Cloud Slicehost Amazon EC2 Small
256 256 1700
10 10 160
Some vaguely-defined fraction of a quad-core server Some vaguely-defined fraction of a quad-core server Equivalent to a single-core 1.0-1.2Ghz 2007 Opteron
$10.80 $20.00 $72.00
$61.20 as of Nov. 1 2009
Bandwidth Out/GB
$0.22 100GB fixed pooled $0.17
Bandwidth In/GB
$0.08 100GB fixed pooled $0.10

So it looks like the Rackspace-branded offering significantly undercuts the Slicehost offering on price in every category as long as your bandwidth is less than about 42GB per month. If your site uses more bandwidth than that, Slicehost would be a better value, particularly if you run more than one instance, since Slicehost pools bandwidth allocations across all the virtual machines you run on their service. Rackspace Cloud is also cheaper than Amazon EC2 across the board except in one area (bandwidth out).

The chart doesn’t reflect this, but Amazon extends volume discounts on outbound bandwidth starting at 40 terabytes. We refer to this as “the Smugmug discount”; I suspect that not too many of their customers beside Smugmug hit this limit in practice (and we certainly never have), so it didn’t factor into my analysis here.

I included Amazon EC2 in this comparison because they get so much attention in this area. To be fair, Amazon has never positioned EC2 as a low-cost offering, instead emphasizing flexibility and the ability to pay as you go. But this comparison shows that the Amazon offering has a weakness in terms of price points (as opposed to price in an absolute sense). There’s no such thing as a “tiny” EC2 instance; their “small” size doesn’t correlate to the Rackspace/Slicehost offering, so they’re missing out on the low end (which in this case is a single-processor virtual machine with under 1GB of RAM). The smallest virtual machine you can run on Amazon’s EC2 has 1.7GB of RAM and 160GB of storage. This makes Amazon EC2 unappealing for a lot of developer use cases, such as temporary staging servers for QA, private/small workgroup collaboration servers (low-traffic blog hosting, file shares and version control servers), and so forth.

(You can pay for a year’s worth of EC2 service in advance and get a pretty significant discount on the per-hour charge; Amazon calls this a “reserved instance“. This might make economic sense depending on what you were looking to do, although it’s not going to beat Rackspace for on-demand scenarios. Again, the problem with the Amazon’s EC2 offering isn’t with price per se, it’s with the price point — they just don’t offer a low-end virtual machine.)

It’s also worth noting that the offerings differ in another area: the ability to spin up and manage machine instances programmatically. Amazon EC2 is far and away the most robust provider in this area, with a web services API that enables users to control most aspects of their virtual machine instances. Slicehost has a rudimentary API, while Rackspace Cloud’s programmable API offering is “coming soon”.

Slicehost also has one feature that we really like: they provide DNS hosting for their customers at no extra charge (their DNS service is also part of their API). Amazon doesn’t appear to provide DNS (although they do generate a DNS name automatically when you create an instance — if you want to designate a host name of your choice, you’re on your own).

Amazon EC2’s large library of machine images (including the ability to create and publish your own machine image) is a big strength and one that many developers have taken advantage of. It’s probably the most compelling feature of their offering in a world in which they are not particularly competitive on price.

Finally, it’s worth noting that of these, only Amazon EC2 offers Windows hosting (which Microsoft will make you pay through the nose for). The Slicehost and Rackspace offerings only contain operating system images for Linux (although they support a bunch of distributions).

I’m spending a lot of time thinking on this as I figure out how to create a hosted service out of the Tinypug project we’ve been working on. For now, we plan to continue to use Slicehost and Amazon EC2 to host client sites as we evaluate the Rackspace Cloud offering in more depth.

Teaching This Fall


Big news! The University of Victoria‘s program in Business, Management and Technology has asked me to teach a class. This will commence in September of this year and will be repeated in January 2010 (assuming I don’t totally cock it up). The course I’ll be teaching is Web Design and Management I, a very basic and not-very-technical course covering how the web works.

This is an distance learning course taught through the university’s Continuing Studies division, so I’ll be doing the teaching from my office in San Francisco (and our other projects and the consultancy won’t be affected).

Let’s Talk

Just realized I hadn’t replaced the “Book Now” widget after moving this blog to new (virtual) hardware over the past week. It’s back up now, so if you want to grab some time to talk about work-related stuff, click the link and let’s set up some time.

The Book Now widget is a neat idea and I’m hoping more people use it — it’s a handy alternative to a big consulting engagement in those situations where all you really want to do is talk to me on the phone for a half hour or whatever.

Thoughts on Oracle/Sun

Interesting quote about the Oracle/Sun acquisition from

“Acquisitions have strengthened Sun’s position in the enterprise storage and business integration software markets, but have not positively affected the company’s business or financial profile.”

To put that another way: Sun has been attempting to achieve incremental successes at a game that nobody else really wants to play anymore. (I really liked another quote from this piece: Sun blamed “inconsistent profitability” for their downfall. I love “inconsistent profitability” as a euphemism for “losing money”; I hope I never have to use it with a straight face, but I’m prepared to if necessary.)

Some more thoughts on this:

1) Everybody’s touting the fact that “Oracle gets MySQL” in this deal. Sure, OK, there is the MySQL technology and the MySQL commercial licensing and support business. MySQL is generating revenue, but not the kind of revenue that’s interesting to a company the size of Oracle. My prediction is that Oracle’s sales force will do something dumb like treat MySQL as an entry-level product in hopes of upselling customers to the real (expensive) Oracle product, which won’t work because the kinds of organizations that want MySQL aren’t the kinds of organizations that want Oracle.

2) Ultimately the open source thing inoculates the MySQL product from a lot of potential corporate evil, which is one of the points of the open-source exercise in the first place. Open source means that if things get too onerous, the community can more or less take its ball and go home if it wants. And this is already happening; MySQL is already being forked (by independent companies like Percona as well as internally within Sun via the Drizzle project). Percona is usable in production today, but Drizzle is not (because that project got started more recently and is aiming at a more ambitious gutting and rearchitecture of the MySQL code base rather than incremental patches and improvements). Still, it is fair to say that if you are looking for the most advanced/optimized MySQL distribution today, you won’t get it from Sun, and I wouldn’t expect that to change under the Oracle regime.

3) A bigger meta-problem: Oracle has always had a serious problem with developer community relations and developer usability of their products. If they were to invest in one area to make this acquisition go more smoothly, it would be this — there are enormous bang-for-the-buck opportunities for them here. (I say this because of Oracle’s historical track record with managing its developer platforms as well as the visceral fear and outright revulsion I’m hearing today from developers after we got wind of this news.) It might have been possible for Oracle to mine the MySQL community for help here if this deal had materialized a year ago, but it seems like a lot of the principal MySQL community folks have either moved on from Sun or gone over to projects like Drizzle.

4) I do think the acquisition makes sense on some levels. There may be a good synergy with Oracle and Java, although Java was never an interesting business from a dollars and cents perspective and I don’t expect Oracle’s stewardship of the language to change things that much.

5) Many more junior- and mid-level salespeople in Silicon Valley are going to be without jobs in six months.

6) No clue what Oracle’s going to do with Sun’s hardware business, but it doesn’t really seem synergistic (and it screws up some of Oracle’s flagship partnerships with companies like Dell and HP). My guess is that they’ll shift it into some kind of maintenance mode.

7) Meanwhile, I am wondering whether HP shouldn’t pursue its own MySQL acquisition. I don’t know if there’s a “there there” in a potential HP acquisition of (for example) Percona, but if Oracle is going to compete with HP on hardware, HP should be prepared to compete with Oracle on databases and applications.

8) It’s interesting that an acquisition of this magnitude can take place without so much of a mention for what it might mean for Microsoft. I think that this can be looked at as a barometer of Microsoft’s relevance for enterprise computing.

Update: In his post on this, Matt says “I would not be surprised if this moment is for Drizzle what Movable Type changing their licensing was for WordPress, even though in this case they’re both Open Source.”

Why Well-Run Developer Programs Matter

Outstanding post over at TechCrunch with a great roundup of comments on the state of the mobile developer ecosystem.

The original premise was that mobile developers were blowing it by focusing exclusively on the iPhone (which seems plausible) and not on developing for Nokia (which seems far-fetched, at least for North American developers).

It’s amazing how many of these comments (particularly the negative ones pertaining to Nokia and Palm) correlate directly to elements of the platform manifesto I wrote after leaving Yahoo in 2006. Bad support and indifferent community management, charging usurious fees for access to the platform, favoring big established companies (also known as “picking winners”), providing half-baked tools and libraries, and an inconsistent technology story on the part of incumbent mobile platform providers created a cavernous opening for Apple and they are exploiting it masterfully. And Apple succeeded in establishing iPhone as a developer platform even though 1) the iPhone still doesn’t have a whole bunch of consumer features that were considered to be must-haves (like a physical keyboard, removable storage, the ability to shoot video and send/receive MMS messages, etc.) and 2) the developer learning curve for iPhone is psychotic if you’re not already building OS X software using Objective-C (the cul-de-sac of modern programming languages).

When I ran developer programs at eBay and Yahoo (and elsewhere) I got a reputation for being a pain in the ass because I wouldn’t shut up about getting the details right. I’m like this because when I approach platform products and developer outreach, I focus on the one resource developers have that they can’t make more of (which is time). I imagine that there are a million developers using and relying upon what I’m about to release, and I think hard about what it means when a large percentage of those developers can’t figure out what I’m trying to provide for them for whatever reason. I mentally multiply the amount of time that might be lost by the number of developers in my audience, then subtracted an estimate of what the issue would cost to fix. Ninety-nine percent of the time, I’d do whatever it took to polish down the rough edges.