Sunday, April 14, 2013

The understated future of Pandora

Pandora is becoming a huge player in radio, fast. Within a few years, it is shaping up to be one of the top radio companies in the US.

Most recently, they've announced that they captured 8.05% of the US radio listening with 1.490 billion hours listened in March. This was up 40% in listener hours YoY I decided to chart out the past year of Pandora's listener hours vs. the total market. It's... revealing.


Why, look at that, Pandora is climbing while the overall market is stagnant. And all they had to do was add servers and bandwidth, not buy up radio stations or new content.

I could have gone further back to get a better idea of trends, but, if you extrapolate these numbers out over the next four years, Pandora will capture somewhere between 19-35% of the market. Pandora is now shipping with cars as much as XM radio.

Consider this for a minute:
But wait, then why is Pandora's margin so low?

The problem for them is in digital radio licensing. Unlike terrestrial radio, Pandora and XM get ripped off by the music labels for radio licenses. It's very, very cheap to get a radio license for a traditional radio station, but not so much for digital.

One theory is that at the end of the day, the labels are going to have to come back to Pandora and XM with hat in hand to try to get better rates. They cannot grow the overall base unless these two media survive and do well. They don't interfere with individual marketing and sales efforts because they are radio. Radio is great advertising for music that people want to buy.

The other lever Pandora can pull is is original programming.

Sirius/XM has made some massive content bets over the past several years. Howard Stern, the MLB, NFL, etc. I'm guessing they paid out the nose for these rights. And I imagine they got more listeners. And they almost went bankrupt in 2009 so I'm not sure this worked as planned. XM is really a service that only makes sense in the car anymore. Everyone else is going to have internet, and Pandora is making a lot of inroads into the car.

I guess one way to look at it is that Sirius/XM took the Groupon model: spend a lot of money to do a land grab. Pandora is taking the slow, steady route. Get land without spending as much, then start pulling levers later. I would say that Netflix followed a similar tack. Only in the past 12 months, 4 years after starting to do Netflix streaming, have they leveraged the original content lever. Over the 4 years prior, they grew huge while paying out the nose for content. Pandora is in a similar situation.

I own Pandora stock. I bought it after I heard this discussion in a coffee shop between baristas:


"Hey, is this Pandora?"
"Yeah"
"Why do we have ads, you didn't pay for it?"
"No"
"We should"

The end.

To me, $36 a year is an amazing bargain -- 1/4 the price of Spotify (which I also subscribe to) and they have more music. I realized, why isn't every small business subscribing to Pandora? Combine that with advertising and that's a huge market.

So anyway, we shall see what happens. I thought they had a bright future, so it's nice to see the numbers sort of back that up.

Monday, January 28, 2013

I challenge all recruiters' claim that programmers are scarce

Since we announced our funding at Radius on Wednesday, just about every recruiter and recruiting website in the Bay Area has spammed me because we're hiring engineers (yes, we are hiring).

When negotiating terms with them, I'm being fairly aggressive though. I'm only offering about half of what they're getting from other firms. Why is that? Because I challenge this notion that programmers are a scarce resource that they somehow know to tap into, or that their website has cornered the market on.

Exhibit A: the Windows 8 App store.


There are DOZENS of password managers and anti-virus programs in here. Dozens. And every one of those required one or more programmers. This is for an app store that no one cares about on Windows 8. Now consider the hundreds of thousands of shovel-ware apps on iOS and Android as well. Or crappy websites. We're talking millions of people who can write serviceable crap-ware out there in the world.

The reality is, there's no scarcity of people who can bang out computer programs. Not even remotely. The "scarcity" problem I think businesses face is two-fold.

1) Public relations.

It's not that programmers are hard to find. It's that it's hard to find ones that will work for you. Or even know about your company.

Google, Dropbox or Twitter have no problem with this. All are huge brand names, great places to work, pay well and have compelling problems to work on. They're viewed as technology companies.

In contrast, it was hard to get decent programmers to work with us at Groupon after we went public for several reasons. One was, of course, candidates believed the IPO took away most big upside on future stock grants (turns out, that was true). But the main ones were that Groupon "wasn't a technology company". The company had a lot of bad press, bad merchant experiences. The founders took a lot of money off the table in a late round. Things like that.

All of that is PR and marketing, not recruiting. There's no secret sauce that some recruiting firm is going to be able to put out there to change these things. Either people know about you and want to work for you, or they don't. I'm confident that we're establishing a brand at my current company that will sell us as an awesome tech company more than the recruiter will. I'm paying them to feed me resumes, that's all.

2) Core competencies

Note that until now, I've been using the term "programmers". You could use this interchangeably with "hackers", "script kiddies", "coders", "developers" or whatever your choice for someone who is competent enough to open Xcode and write shovelware for the iPhone, or bang out pages with N+1 select statements in Rails.

Another term I have for this is "Goo-coders": people who can write code only because Google exists and they can search for the answers on Stack Overflow or whatever.

There is a higher level than this, and the name I apply to it is "software engineer". I understand that people debate this term vs. "software developer" or "software craftsman" (I'm sorry, but barf). Whatever you want to call it, here is what I mean by it: someone who has a deeper understanding of how computers work, can have a conversation about code, doesn't have an agenda for certain tools ("I must use Clojure at my next job"), can figure out best practices where there are none, and can implement a robust, well-designed, scalable software solution based on requirements without hand-holding.

Those are the core competencies I want. Yours may be different, but those are mine.

I have to look through a lot of resumes to find these people and recruiters aren't that good at filtering them. A lot of times, someone looks good on paper but after 10 seconds of talking to them, you know they don't fit into the above. So I end up spending more time than the recruiter on all of this for any given person. In addition to filtering through the resumes I get, I spend the time to phone screen, to set up interviews, negotiate the offer, blah blah blah.

All of this adds up to: most recruiters are sourcing me solicited resumes, nothing more. In fact, I know one recruiter (that we've since fired) was simply doing Craigslist arbitrage. They took our job description and posted it to craigslist, then they did almost no filtering on the results before forwarding. I know this because I ask candidates where they heard about the job. If you're using a recruiter, you should do that too. This work was not even remotely worth the amount we were paying this company and I refuse to do it again. You should too. Even if you know nothing about software engineering, you should instead find someone to help you filter results when you post to craiglist yourself first.

So my recommendation, when you're looking for people, is to:

a) Hire a PR company instead of paying recruiters a ridiculous percentage.
b) Sign up for something like Jobscore, which allows you to figure out which online job posting funnels are working best for you.
c) If you truly know nothing about engineering, go make a friend at a local hackathon that can help you do phone interviews for you.

Tuesday, January 01, 2013

On Windows 8

Oh crikey, now @kunikos as asked me to explain what's wrong with Windows 8. No way would that fit into 140 characters so here goes...

I've given this a lot of thought, and have already outlined how to profit off of the Windows 8 disaster. After all of this thought, I've come up with one word to describe Windows 8:

Pointless.

Pointless for users. Pointless for OEMs. Pointless for ISVs.

The only company it's not pointless for is Microsoft. Microsoft is desperate to try to find a way to get people to develop for their fledgling mobile platform and heretofore non-existent tablet platform. By merging the aforementioned fledgling platforms into the mainstream platform, they hope they can get developers for the former.

I mean, I get it. I get what they're trying to do. The goal is admirable, just not the execution. It's also about 8 years too late. They had their chance with Windows Mobile for a decade before this. They had .NET running on it and everything. And they failed to make it work.

So now they're sacrificing their existing userbase in order to make it work. I have not heard a single story of a business user upgrading to Windows 8. Not one, even on the internet. And who would? Any IT department worth their salt is going to recognize immediately that it's just not worth it. Why bother with all of the additional help desk calls when the non-computer literate can't find Solitaire anymore, or WebEx doesn't work, or whatever? It's a whole new set of headaches for an OS upgrade that, if you look at the features, actually has nothing on the back of the box that's interesting for enterprise. The features listed are nearly all self-referential.

And not only that, Microsoft threw OEMs under the bus with Surface. They've thrown ISVs under the bus by making RT incompatible with all existing software. And not to mention that no one -- not even Microsoft -- sees any way to build additional value out of anything Windows 8 offers. Microsoft is charging less for this upgrade than any other upgrade, including Vista! Can OEMs charge more for their Windows 8 devices? No. Can ISVs charge more for their Metro-ized apps? Hell no. If anything, these sandboxed app stores drive the prices down.

But let's go into more detail about Windows 8 philosophically and what went wrong.

Windows 8's core premise is that the desktop OS UI is in decline. That the keyboard and mouse are outmoded and the touchscreen is the ideal. This is not what I believe, this is what Microsoft believes, as evidenced by Windows 8. Why do I say that? Because they have taken 18 years of perfecting the Windows 95 workflow, selling it to billions of people, then thrown it all out. Windows 8 is Frankenstein. New UI motifs gobbed onto existing ones as an act of corporate desperation, with no way to turn it off.

The fundamental view is a full screen Metro view yet all existing apps are desktop apps. This makes usage pattern on Windows 8 is so bizarre and jarring for desktop users it's intolerable. Hit the Windows key and suddenly everything gets replaced by a monstrous full screen Metro panel. And then the funniest part is that visual discoverability is worse in Metro than it is in Windows 7. Need to find a way to add a printer? You need to know to swipe over to the right hand side of the screen, get the charms bar, hit Search and then type for "printer" AND THEN click "Control Panels" to search. There is no way to click around the screen until you find it like in W95->Win7.

But here's the kicker: no-way, no-how can Metro supplant Windows desktop apps as they exist today. You can only see two Metro apps at a time. Even if you have a 30" monitor, as I do, you get only two. No longer do you have the cool snapping of Windows 7 -- a massive boon to usability that Win7 introduced -- but now you can only have predetermined division sizes you can use. It's as if no one at Microsoft envisioned what it might be like to develop actual productivity applications for Metro before converting the whole operating system to it. Need to see five spreadsheets at a time to cut and paste between them? Tough shit.

The most telling part? The truly shocking thing? The "Metroized" Office that ships with Surface is a desktop app. It pops you out of the full screen Metro experience to operate. It has widgets that are flattened out like Metro, but even Microsoft realizes that nobody can use this full screen WinRT experience for anything serious.

So there you have it. There's my 2c on why Windows 8 is an unmitigated disaster. WinRT is not in itself a bad idea. Metro is not a bad idea. The problem is that Microsoft tried to approach the problem of convergence by smashing the two onto desktop Windows instead of finding a reasonable middle-ground. Not even Apple has been brazen enough to think this is a good idea.

Microsoft should undo the damage and revert away all of this Metro crap. Maybe people will pay for this upgrade. Then for their future strategy, simply fork Android and build Office, plus their C#, C++, .NET tooling for it. Give up on the OS market--they're screwed either way--and start working towards a stronger services market.

FWIW, I didn't bother downgrading to Win 7 as mentioned in my tweet. I instead loaded on Mint 14. It works better on this PC (note: there is no ethernet driver support for Win 8 on a 1 year old XPS 8300!!). It has a windowing UI that works well and I can just boot into Windows 8 when I want to play games.

Sunday, December 30, 2012

The numbers show C++ is in decline

I love C++. I think it's cool. I wish I knew it better than I do. I think C++11 is awesome and I recommend to people who want to write cross-platform iOS/Android apps that they use C++.

That said.

There are a lot of reasons not to use C++ for anything in userland other than, say, games. And even then I would say this is mostly a restriction of the platform and its APIs than anything to do with language advantages. You can manage memory off-heap when needed in managed languages.

This blog post documents reasons to not use C++ well. Most of that is debatable, and Microsoft is proselytizing a "C++ renaissance". I wish that were the case in a lot of ways, but the rest of the world is in disagreement. I present the following:



I think this reflects the kind of demand for C++ engineers you see out there in the world. And let's remember, this only samples the jobs that list C++ somewhere in the description. It doesn't mean the job has anything to do with programming C++.

C++ is fantastic for game programming and HFT. I think both of those careers are going to be fairly short-lived in the greater scheme of things, and the above reflects the way the job market is headed.

Thursday, December 27, 2012

The Unspoken Linux Future: Android

I like this blog called "Linux Rants" and I follow Mike's posts on G+. He posts semi-frequently (i.e. doesn't take over my feed) and I like reading the hardcore Linux angle towards tech topics.

Earlier today, he linked to this article in PC World called "Five Reasons 2012 was a great year for Linux". My response was simple: "how did Android only get one mention in this article?" For all of the advancements that Linux on the desktop has made in the past several years, none of that compares to Android. Let's look at the numbers.

  • Ubuntu has something like 20 million existing users. Android will add that number of new users in the next 15 days.
  • The article discusses "preloaded prevalence" and a handful of companies shipping PCs with Linux preloaded. Android must have dozens, many of whom are making billions shipping android. I can't find a definitive list but I counted at least 20 here.
  • The article also discusses "gaming acceptance" -- and I agree, it is a huge deal that Valve is beginning to support Linux and a great hedge for them -- however, if you compare the sheer number of games, or hours of games played, Android will again dominate.
  • Android has already been forked successfully by many hardware vendors into successful products. Nook and Kindle Fire come to mind.
I'm not saying this all to pooh-pooh the results that Ubuntu and others have put up there. I'm pointing this all out to get Linux fans (a group I include myself in, even though I type this on a Mac currently) to focus on the future. That future will be Android. At some point, the several million user base of OG Linux becomes secondary to the billion user base of Android (est. June, 2013). Or, if Tomi's predictions are correct, the two billion user base by 2015.

When something has that much mindshare, it permeates everything. That's how Windows became a viable alternative and then the mainstream for workstations (RIP SGI) and a very popular server platform. When a platform can offer vertical integration, that's a big deal, and something Microsoft leveraged very well. I think Android is going in the same direction for a slightly different reason...

So now imagine the future. Try even today. What are we using? Mostly cloud services. No need for corporations to run their own servers. Email is hosted by Google. Docs are Office 365 or Google apps. Even code is in the cloud. I made Github the standard for our engineering team. Reviewboard is a SaaS we pay for as well. Every possible chance, I push stuff we need up to a SaaS product or the cloud.

This is already the standard. When I hear about school districts wasting money for Exchange and Windows (or Mac), I seriously get angry. Take Google up on their offer to do this for you for free. Then just get educators Chromebooks or Transformers. Buy a few Windows boxes or Linux boxes for the educators who need it to run specialized software.

In that future, why do I need an OS like Linux as it's baked today? I don't. I don't need X11. I don't need chkconfig, mysql, etc. It's handy for developers, but even then I almost exclusively work on remote boxes as it is (the exception is when using IntelliJ).

So while I'm happy that Linux is making strides to be easier to use, it's like Windows 8: polishing the legacy path. There's no growth left there. I've tried installing Linux on Mac and using it a few times but have given up. I just don't care enough to deal with the driver crap.

Instead, I'll just bide my time for the laptop of the future. The laptop of the future is an improved Transformer or Chromebook. The desktop PC of the future is a Chromebox, "Androidbox" or something like it. And while there may be forks of Linux in the future specific for gaming (as it appears Valve is looking at with their hardware), to me, the massive userbase of Android and the hardware support there does make this a mutually exclusive choice. You can focus your open source development, OEM work, etc., on "legacy" Linux distributions like Mint and Ubuntu. Or you can focus on Android. I just don't see people choosing anything but Android and the web for big time open source efforts, maybe as soon as 2013.

Full disclosure: several months ago, I contacted a friend at Google about potentially porting X11 to Android in order to give a better path to making Android a full-fledged desktop OS. I ended up scrapping the idea because I figured that ultimately, another solution will be had for windowing on Android and for its native apps.

Thursday, November 22, 2012

What's up with Nexus?

I just saw a Nexus 7 ad on TV during the football game and was reminded to post this. The ad featured all three Nexus models but focused on the 7.

What the hell is going on with Nexus?

The N4 is poised to be the best selling Nexus ever. The community has been raving about this phone other than the missing LTE issue. The thing sold out in something like 29 minutes and has been unavailable ever since.

Just to put that in perspective, it launched on 11/13. So it's been sold out for 10 days now (since it was basically never available for non-F5-crazy mortals). Google has wasted nearly 25% of their window before Christmas with a sold out item. As the world's largest advertising platform, it's somewhat mind-boggling that they don't understand basic product launching strategies around Christmas.

So unless Google surprises everyone with a huge Black Friday or Cyber Monday push, I'm going to chalk this up as one of the worst gadget launches I've ever seen. If it's not available for Christmas, what was the point of launching it in November? Wait until January. Otherwise it's just a distraction and given the rate that technology obsolesces, by the time it's available it will be obsolete.

I'm really confused with the Nexus strategy. They have an amazing device out there for a bargain basement price that no one can buy. Every other comparable device on the market is $700 unlocked. You would think that since Google would want to make up those profits in volume, they'd be making and advertising the thing like it was going out of style.

The other thing I wanted to say is that the Pure Google experience I have with my Nexus is now one of the buggiest smartphone experiences I've ever had. 4.2 is even more of a disaster than iOS 3 on my iPhone 3G.

Many, many apps were crashing on day one of the 4.2 update. Not the least of which was the Gmail app, which is still crashing. If Google isn't testing their OS releases with the Gmail app, what are they testing it with? So imma going to throw down this QA rule and you can decide if it's a good one:

If the Gmail app ever dies with NullPointerException because of a new OS release, don't ship it.

Does that sound reasonable? I didn't buy the Nexus to be your beta tester. I bought it to get the first release of the pure Google Android experience, and with that, I expect some good QA. You have three devices on the market that were getting this release.

Compare this to Apple, who seem to be able to release their OS with dozens of carrier-specific builds around the world on the same day and have it be stable. Apple used to have some of the worst QA (well, they still have some of the worst on the Mac), now I'd say they have some of the best in light of what they accomplish with their iOS releases.

4.2 has all kinds of craziness. It lags like mad, which is super-noticeable when you're trying to use the new (and awesome, except for the lag) gesture typing. The Wallet app is screwed up and I've had to hand over my credit card in lieu of it. My Starbucks app lost all of its data. I'm forgetting more as well.

In advance of 4.2, I was prepared to commend Google on how they've iterated so significantly in the past year. ICS and Jelly Bean, plus Jelly Bean 2 (?), have some insane feature advancements for the platform. Android is easily the most advanced smartphone OS out there. And then this release took that all back to naught because of the bugginess. Even a hacked version of 4.1 on my VZW Nexus was more stable. What's up with that?

All of this really makes me wonder what's going on with this. I love Google, Android and Nexus. I know Google hasn't made a lot of money on Android and my mind is boggled now as to why they're wasting golden opportunities like launching the N4 at Christmas. I hope they surprise me this weekend.

Sunday, November 18, 2012

On the opportunity that Windows 8 provides

Windows 8 is a usability disaster by most accounts. Most recently, I read this article that details some of this from a study of a dozen users. Read it, it's very comprehensive.

I've been using Windows 8 since the day it released and it's obvious to me that Microsoft misstepped by trying to merge the desktop and the tablet. The problems are not just "getting used to it" type problems like the Office Ribbon.  There are deep, deep usability issues that will need to be rectified by either further innovation (hard) or by reverting to the old (easy, but embarrassing).

One of the most obvious usability nightmares occurs when I hit the Windows key and start typing the name of an app I want to run. In the past, it would open up a small entry box in the Start window, compete the app name and run it when I hit return.  In Windows 8, it brings up a full screen window and does the same thing. But let's think about this: you just replaced the entire screen with a big panel in order to find one app. When I hit return, it pops out of this experience to run the app, which is most likely back on the desktop I just came from since no productive apps are within Metro itself (nor should they be -- read the article above). "Jarring" is the nicest way I can describe this interaction.

Windows 8 has put Microsoft in a tough position. The next logical question is, how can one profit from it? Who out there can move quickly to exploit this opening?

Most people are going to contemplate the obvious choice: that the opening is for Apple, like, for example, this article by JLG. I disagree. The tablet is not a replacement for the desktop PC in the way knowledge workers need. Additionally, MacOS X is fairly unloved in the corporate environment. Apple hasn't nurtured the enterprise (compared to the consumer) and corporate IT isn't going to rush to replace PCs with Macs anytime soon. No major company I know of is thrilled at the idea of single-sourcing the hardware, which is what it would be to standardize on Apple.

Then one might consider Android. Android has the same issue as the iPad: it's not a replacement for a desktop PC. At least, not yet.. maybe someday. It at least supports a mouse, but is missing the kind of productivity apps one would need.

Chromebooks are interesting but can't support legacy PC apps.

So the question is, what plays out there could:

A) Leverage the investment IT departments have already made in PCs.
B) Allow IT departments to continue buying from their existing vendors like Dell, HP, etc.
C) Helps application deployment headaches.
D) Still slowly morphs companies away from their PC environment.

To me, almost everything that falls out of these points is going to be rallying around the web.

One play is focusing on making web applications more desktop friendly, then selling web services that can supplant Office, Exchange and so on. Gee, sounds like a good one for Google to take on. Mozilla could too, of course.

For example, Chrome's usability as a native application is pretty dreadful. Pretty much the only thing I can do is "pin" my Gmail tab, which is still easily closable when I didn't intend.

It should be built in to Chrome that I can create a regular OS-like desktop application for any webapp. It should get first-class behavior. It gets its own Dock/Taskbar icon, it gets real alerts, and so on. Make it a separate process with a distinct executable name if you have to.

Funny story: Microsoft already did this! They did it for IE 9. For some reason, the competition never caught on that this is a pretty good way to brand your web app on someone's taskbar. And yet, it could be taken so much further. Allow the application to change the native menu bar. Completely hide the fact that it's a web application. Isn't this what XAML was supposed to be? Mozilla and Google should be pushing on the same concepts.


The second play I think would be very wise would be towards tooling for the enterprise to replace all of its desktop .NET and VB applications with web-based ones. Just yesterday, I was talking to an engineer who described his company's goal being to make a JS framework that could be used for this kind of purpose in the enterprise. There are a lot of small companies rallying around the idea of HTML5 and Javascript end-to-end in order to solve these problems. But you know what big company could do great if they just played their cards right? Adobe.

Adobe should buy all of the companies, sponsor all of the open source projects doing this kind of work right now. VMWare gets what they need to do in their space. They're sponsoring several projects that can be used as PaaS. And when the day comes, they want to be the best at supporting those platforms in the cloud.

Adobe should be taking all of these projects and making the tooling around them excellent. Why do I still find it easier and faster to type JS, CSS and HTML into vim? Adobe needs another Flash success story for themselves. Right now they have these "Edge" tools that, frankly, look less powerful and less interesting than what I can get out of the Chrome developer panel.

So there you have it, a couple ideas of who and how one can benefit from Microsoft's Windows 8 screw-ups. The common thread is the web however. Nothing about iOS or Android make it clear how they could start replacing billions of desktop PCs and Office installations anytime soon. Web applications that more seamlessly integrate with the existing legacy platform... and making tools that your internal developers can use instead of .NET or VB6? Both of those seem a lot more direct.