Accidental Tech Podcast: Feature Photos →
Ad-blocking estimates, Apple Music three months in, iPhone 6S first impressions, and John Siracusa doesn’t review El Capitan.
I’m Marco Arment: a programmer, writer, podcaster, geek, and coffee enthusiast.
Ad-blocking estimates, Apple Music three months in, iPhone 6S first impressions, and John Siracusa doesn’t review El Capitan.
Microsoft Surface Book, iPhone 6S CPU differences, and the challenge of being Twitter’s CEO.
After a year of work, Overcast 2 is now available as a free update for everyone. It’s mostly a major under-the-hood improvement, with relatively few user-facing changes. But they’re pretty good, I think.
And now, all features are free, and I’m trying a new business model.
The headlining feature of Overcast 2 is streaming. You can still download all episodes as you did before — I fixed some bugs there, too — but now, you have two more capabilities:
And with the new storage manager, you can see how much space your downloads are consuming for each show, and optionally delete the downloads and stream the episodes on demand.
Overcast’s streaming engine is completely custom-written and designed for modern devices, the modern mobile internet, and the expectations of today’s customers, tightly integrated with Overcast’s custom audio engine to be as fast and efficient as possible.
And, of course, Smart Speed and Voice Boost are always available, even when streaming. I wouldn’t have it any other way.
Even if you don’t plan to use streaming, you’ll reap its benefits: converting the audio engine to a streaming architecture has made all playback faster to start, easier on battery life, more compatible, and more reliable. (And everyone wants to play an undownloaded episode right now sometimes.)
Smart Speed and Voice Boost have also been quietly enhanced:
Quite simply, it sounds a bit nicer.
I was wrong. (Not for the first time.) Turns out that chapters are pretty nice. Don’t doubt the Germans.
Overcast’s podcast directory has always had a good search if you knew what you were looking for, but browsing was limited to very narrow editorial picks that I edited manually, badly, and infrequently. Since I sucked at that job, I fired myself and replaced me with someone far better: everyone else.
Now, the directory categories are powered by recent recommendations by Overcast users. This is already surfacing far more diverse podcasts, and updating far more frequently, than I could ever offer as one person who mostly listens to tech shows.
I’ve made lots of other changes and fixed a lot more bugs. Some of the highlights:
Plus too many smaller improvements to list here.
Overcast has always been free up front to bring the best app to the most people. But I’m just one person, running this business the old-fashioned way, so it has to make money somehow.
Overcast 1.0 locked the best features behind an in-app purchase, which about 20% of customers bought. This made enough money, but it had a huge downside:
80% of my customers were using an inferior app. The limited, locked version of Overcast without the purchase sure wasn’t the version I used, it wasn’t a great experience, and it wasn’t my best work.
With Overcast 2.0, I’ve changed that by unlocking everything, for everyone, for free. I’d rather have you using Overcast for free than not using it at all, and I want everyone to be using the good version of Overcast.
If you can pay, I’m trying to make up the revenue difference by offering a simple $1 monthly patronage. It’s completely optional, it doesn’t get you any additional features, and it doesn’t even auto-renew — it’s just a direct way to support Overcast’s ongoing development and hosting without having to make the app terrible for 80% of its users.
If only 5% of customers become monthly patrons, Overcast will match its previous revenue.
Patrons may get special features in the future if I can’t afford to offer something to everyone (due to hosting costs, etc.), but today, patronage is simply that: supporting Overcast directly, because you want to. And if you’d rather not, no hard feelings.
Thanks, and I hope you enjoy Overcast 2.
When Overcast 1.0 launched last year, I expected some pushback for its pricing model (free with limits, $5 to unlock everything). I knew there was a chance I’d be perceived by some indie-development commentators as a rich, popular bully aggressively taking the podcast market from other indie developers.
I decided to proceed with that pricing model anyway, because:
It turned out that nobody complained, and everything’s fine.
In fact, based on rankings, there’s a pretty good chance the top paid-up-front podcast apps — Pocket Casts, Downcast, and PodCruncher — made more money than I did. And all three probably have far more users, each, than Overcast.
This year, with 2.0, I decided, for various reasons, to replace the “free with paid unlock” model with an “everything’s free, pay what you want” model.
And I finally got the pushback I expected last year: Michael Anderson says this is “not quite” predatory pricing. Michael’s narrative is dramatic, but untrue. No first-world iOS developer will “starve” if their app doesn’t sell, and I can’t spend years on an app that makes no money.
Similar reasoning as last year guided me on this year’s model:
I wasn’t very competitive against Pocket with Instapaper, and Pocket “won” (at least in the sense of having far more users, although if I had to choose either company to be running today, I’d definitely pick Instapaper).
I’m trying not to repeat my mistakes, and one of the biggest mistakes I made was putting short-term gain from paid-app sales above long-term growth. I watched my biggest competitor clone all of my features, raise VC money, and hire a staff. I knew he’d go completely free months before he did. He wasn’t doing anything I couldn’t do, but I wasn’t doing it. I knew I was vastly outgunned, but I just sat back and let it happen.
This time, I’m not too worried about Pocket Casts and Castro. Well, a little — that instinct never fully leaves a person. But even after Pocket Casts ships their silence skipper and volume booster shortly on iOS and Castro 2 comes out with a far nicer UI than I could ever imagine, they have their users, I have mine, and we’ll all be fine. We have much bigger problems than each other.
Podcasts are hot right now. Big Money is coming.
Big Money isn’t going to sell nicely designed, hand-crafted, RSS-backed podcast players for $2.99 or ask you to pay what you want to support them, because that doesn’t make Big Money.
They’re coming with shitty apps and fantastic business deals to dominate the market, lock down this open medium into proprietary “technology”, and build empires of middlemen to control distribution and take a cut of everyone’s revenue.
That’s how you make Big Money. And it usually works.
With those challenges on the horizon, this is the worst time for the indie-podcast world to put up any unnecessary barriers. I don’t know if Overcast stands a chance of preventing the Facebookization of podcasting, but I know I’m increasing the odds if my app is free without restrictions. As long as I can make money some other way, I’m fine.
Predatory pricing is setting the price so low that competitors can’t match it, by making yourself lose money until they all go out of business. It’s usually not illegal, although most people consider it fairly rude (except when VC-funded companies do it and call it “disruption”).
But I don’t need to do that. Patronage works. I may be taking a pay cut for a while, but it’s still very profitable for an individual. As long as I can keep the lights on and the virtual servers running, I’m making enough, and I’m not doing anything that anyone else can’t do.
And this time, as Big Money comes, I’m ready.
Overcast 2 challenges and lessons learned, avoiding the Facebookization of podcasts, and trying Medium.
Expensive trackpads, Facebook’s battery drain, and whether Apple properly balances usefulness, looks, and profit.
NAS vs. externals, Google cares about podcasts now, and John teaches me what a “sound bar” is.
I lack self-control and waste far too much time on social apps on my computer, especially Twitter, and more recently, Slack. Here’s a typical weekly breakdown as reported to me by the very good RescueTime:
I could just uninstall them or block their services at the network level, but I need both of them for parts of my work — I just don’t need to keep switching over to them constantly and wasting so many hours per week. Without any intervention, I’ll just habitually leave these apps open, right next to what I’m working on, resulting in a steady stream of tiny interruptions throughout the day as new messages trickle in.
Tonight, I hacked together yet another crazy idea to try to mitigate these problems: a script that automatically quits social and news apps every 10 minutes unless I’m actively using them, or if I’m podcasting (in which case I want them to stay open even if they’re not in the foreground).
Here’s how to do this, if you’re interested:
Open Script Editor and save this as an AppleScript somewhere (I saved it as ~/antisocial.scpt
):
set quitlist to {"Tweetbot"}
set exceptionTriggerList to {"Skype"}
tell application "System Events"
set activeAppName to name of the first process whose frontmost is true
end tell
set exceptionRunning to false
repeat with exceptionName in exceptionTriggerList
if exceptionRunning is false and application exceptionName is running then
set exceptionRunning to true
end if
end repeat
if exceptionRunning is false then
repeat with appName in quitlist
if (activeAppName as string) is not (appName as string) and application appName is running then
tell application appName to quit
end if
end repeat
end if
My lists on top there mean, “Quit Tweetbot, Slack, and ReadKit if they are not the active application, but only if Skype isn’t open.” Adjust as necessary.
Then you’ll need launchd
to run it at your desired time interval. Create a com.marcorules.antisocial.plist
file in ~/Library/LaunchAgents
that points to the AppleScript like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableGlobbing</key>
<false/>
<key>Label</key>
<string>com.marcorules.antisocial</string>
<key>LowPriorityIO</key>
<false/>
<key>Nice</key>
<integer>0</integer>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Users/YOURUSERNAMEHERE/antisocial.scpt</string>
</array>
<key>StartInterval</key>
<integer>600</integer>
</dict>
</plist>
Change the YOURUSERNAMEHERE
bit to point to where you saved that AppleScript, and set the StartInterval
integer to your desired time interval in seconds (600 = 10 minutes).
Then run this in Terminal to add this new task to launchd
:
launchctl load ~/Library/LaunchAgents/com.marcorules.antisocial.plist
You can test it by opening any of the targeted apps, then running this in Terminal:
launchctl start com.plisterine.antisocial
…or just waiting 10 minutes.
I don’t know if this will stick, or if it’ll meaningfully solve my problem, but it’s worth a try.