Tech Distortion

Engineering Technology Automation Software
RSS 

Article Categories

Overcast Review

Marco Arment is a well known and somewhat prolific software developer for iOS. His first iOS app Instapaper went on to become incredibly successful, as did The Magazine not just for the app but for all the clones it inspired. Some lesser known apps along the way include BugShot and Nursing Clock (No longer available) which didn’t do so well but these show the theme that he follows: Ask what problem you face and write an app to solve that problem1.

With all that behind him Arment has turned his attention to Podcast playback apps as one of his other (current) passions and developed Overcast. [App Store Link] It’s been in development for a while and was pre-announced back in September, 2013 at the XOXO conference. With Arments history of success and a long lead-up to todays release, it’s inevitable that those interested members of the community have very big expectations for Overcast. The reality is it’s a podcast playback app and should be judged on its performance at that specific task.

Arment previously announced the following (and nothing’s changed since then) so let’s get these out of the way up front. Overcast v1.0 will not have:

  • An iPad-layout version (obviously this will work in 2x mode just fine)
  • Streaming (coming later this year)
  • Video support (audio only)

If you’re into feature comparisons and tick sheets then I doubt you’ll find Overcast immediately compelling and that’s a shame because I’ve always felt that podcast players fit into two categories: Too simple and way too complicated. Overcast strikes an interesting balance and lies somewhere in-between.

The Competition

Overcast enters a much more mature space with stiff competition from well-established podcast apps such as Pocket Casts, Castro, Instacast, Downcast, PodWrangler and Apples own Podcasts app just to name a few. A fact Arment acknowledges in the About screen suggesting that if Overcast isn’t for you then you should support other independent developers which is a nice sentiment.

That said in order to be a useful addition to the current crop of podcast apps Overcast has to at least cover off the main features of the other apps currently in the space as well as add something(s) the others don’t. Whether it does or doesn’t will depend upon your own personal needs and drivers in a podcast app however I’ve been fortunate to be Beta testing Overcast for months so I can hopefully give you some idea of where Overcast is different.

Why Use A Podcast App At All?

Podcast playing apps are essentially specialised RSS ‘readers’ however since audio is handled differently to text2 that leads to a different subset of optimisations. Recently a group of Twitter friends were discussing RSS going away entirely for podcasts at some point with an optimised podcast-specific format with all network-streaming and built-in browser support cross-platform; however until (if) that happens podcast apps in their current form are a necessity for those of us that enjoy our podcasts and listen to them at least as much if not more than we do music.

It’s Free! With In-app Purchase

It’s an interesting choice that I know Arment has been chewing on for a very long time. Whether you agree or disagree with the approach it’s clear why: IAP gives users the opportunity to try the best of the new features in the app for a brief time and if they decide they like it they are free to purchase those features. Overcasts IAP pricing is consistent with the competition in the same space: (prices in USD and updated 19 July, 2014)

App Cost IAP
Overcast FREE $4.99
Downcast $2.99 N/A
Instacast $1.99 N/A
Castro $3.99 N/A
Pocket Casts $3.99 N/A
Pod Wrangler FREE $1.99
Podcast.app FREE N/A

The following features are restricted or absent unless you activate them through IAP:

  • Cellular Downloads (absent)
  • Per-podcast effects (absent)
  • One-by-one playback option (absent)
  • Sleep timer (absent)
  • Total playlists (restricted to one)
  • Total episodes in a playlist (restricted to five)
  • Variable Speed (can try it 5 minutes at a time)
  • Smart Speed (can try it 5 minutes at a time)
  • Voice Boost (can try it 5 minutes at a time)

Are these worth it? Read on to find out…

First Screen

Startup Screen and Sync

Both Downcast and Instacast start with a modal dialogue box (two for Instacast) before diving into their main screens whilst Castro simply lands you on your main screen to let you figure it out for yourself. Overcast instead has a custom initial screen that reassures the user why Sync accounts aren’t such scary things. Sync support has become a staple of podcast apps in recent times (noting Castro as one exception) so Overcast must support it but for me personally I don’t use it as I almost always listen to my podcasts on my iPhone so there’s nothing to sync with. The other arguement for sync relates to restoring or buying a new device which for me doesn’t happen very often at all.

Irrespective Overcast at least takes time to explain why sync is helpful whilst the other big names I tested didn’t really bother to put it front and center, if at all. Then again since it’s impossible to use Overcast without an account set up, such explanations could be considered a necessity.

Creating a new account:

New Account Screen 1 New Account Screen 2

Adding a Podcast

You’re presented with this front and center once you’ve either logged in or created your new account. It’s possible to Add from a URL (of course) but Overcast maintains its own internal list of podcasts and like Pocket Casts it supports server-side sync. The Add Podcast page is well laid out with multiple groups of six thumbnails based on category to aid your discovery of new podcasts.

Initial Screen Adding a Podcast

Standard Features

Rather than dissect and describe it to the nth degree, here’s a short list of items that are very similar between the major apps that Overcast also has and does equally as well:

  • Playback screen (Volume control is absent but then I always thought it was redundant and prefer the volume buttons on the headset or the phone itself)
  • Podcast search & URL Addition
  • Sleep Timer (15 minute and 60 minute fixed intervals)
  • OPML Import/Export [Instructions to export/import from Instacast, Downcast, Castro, Pocket Casts are all built in]
  • Per Podcast Notifications (I love the fact that you can set notifications for specific podcasts when new episodes go live. Instacast supports this as well)
  • Selectable Seek Times (Refer table below)3
Overcast 7s 15s 30s 45s 60s
Downcast 5s +5s inc 10m
Instacast 5s 10s 20s 30s 60s 2m 5m 10m
Castro 15s 30s 45s 60s
Pocket Casts 5s +5s inc 500s
Pod Wrangler 60s 2m
Podcast.app 15s

The Share Sheet:

Share Sheet

Easier Playlists

A lot of people rave about Downcast and how it handles priority podcasts and playlists. For me that’s not a big issue as I tend to change my mind a lot and most of the podcasts I listen to are longer than my commuting time making playlists unnecessary. That said, a lot of other people listen to podcasts in playlists when driving on long trips, long flights, doing housework or even during work hours and want to set and forget.

Fortunately Overcast can organise playlists by their play status (New/in progress, In progress only & Deleted only), selected podcasts (or except those selected), priority podcasts, Oldest to Newest (and vice-versa, individual episodes or by podcast), plus add or exclude specific episodes from that playlist. Both Downcast and Pocket Casts (Episode Filters) do good jobs on playlist management as well however I find Overcasts to be more intuitive on the whole.

When listening to a podcast either on a playlist or if there’s a list of episodes of a podcast with some still unlistened you can opt to listen back “One by One” (IAP) or “Continuous Play” which is nice to have as an override however I can forsee some people forgetting the One by One feature is on and when the next episode doesn’t queue up shaking their fist briefly. That said, that issue isn’t unique to Overcast.

The Unique Bits

Twitter Recommendations: A great discovery feature in Overcast requires you to link your Twitter account (assuming you have one) and once you’ve signed in the recommendations are pulled from those you follow on the selected Twitter account and displayed in a group of five thumbnails at the top.

The recommendations themselves are for individual episodes and the list shows who recommended them and is broken down into recommended episodes that can be individually downloaded and a section for podcasts you might like which can be subscribed to. It is possible to recommend an episode from within Overcast either on the sharing sheet or the star directly on the episode information screen but not a podcast in its entirety. This recommendation information however is kept within Overcast and nothing is posted to Twitter unless you specifically share to Twitter via the Share Sheet.

Link To Twitter Twitter Recommendations

Smart Speed: This is an interesting feature that I didn’t realise I wanted to have until I had it. In audio editing applications there is often an option to “Strip Silences” out of the audio track. This is designed to remove the natural pauses people make as they draw their next breath between words and sentances. If this is done it can make the audio sound disjointed and unnatural depending upon the settings used but more importantly it’s up to the audio technician/editor that’s working on the podcast production to decide whether to do it and with what settings. Arments approach hands control of silence stripping to the user. Technically how he’s done it is beyond the scope of this review but however he has, it’s done exceedingly well. To drive the point home on the Settings page a counter shows just how many minutes you’ve saved by using the feature. It’s so effective that most of the time you don’t even notice it’s on.

Effects: The volume boost is good for podcasts that have been poorly edited or recorded under less than ideal circumstances I found, but generally I leave it off because I don’t need it to listen to the podcasts I do. It does effectively boost the audio as the name suggests. The playback speed can be adjusted between 0.75x and 2.5x (roughly) which Arment made a good point about being ‘actual’ speeds during development. The best part of these effects though is the ability to set those effects either globally or by individual podcast. Each week most podcasts have the same hosts under similar recording conditions hence it’s often the case that the hosts speak very quickly or not so fast with either a faint or loud recording setup making optimising the playback speed and boost on a podcast by podcast basis very handy.

Seek Acceleration: There’s also an option to increase the acceleration between seeks when the button is repeatedly pressed such that on the 4th seek forward (also works for consecutive rewinds) the seek duration you’ve selected is increased by 50%, on the 5th seek by 125%, then 237.5% then a maximum of 500% of the seek duration provided your selections are not greater than 1 second in-between. It took me a bit to get the hang of this feature but once I did it turned out to be quite useful.

Selective Subscriptions: It’s possible to subscribe only to the episodes you want when adding the podcast to your feed as you can opt not to subscribe to all new episodes and if you do subsrcibe to all new episodes you can choose to be notified when new episodes are available and choose to keep 1, 2, 3, 5, 10 or All Unplayed episodes. This is wonderful for trying out new shows that you’re not yet sold on. Technically some of the other popular podcast apps support this through different mechanisms however the implementation in Overcast is the only one that actually makes sense to me in how it works.

Web Interface: Also becoming the next standard of sorts is a web interface for those podcast apps that offer accounts and syncing like Podfy. Overcast currently shows a list of your currently active episodes and selecting an episode takes you to a page with an embedded web player and various sharing options including the option to share a timestamp link like the one I implemented myself recently on this site4. Knowing Arments penchant for PHP and server side features I expect the web interface will become much more powerful as time progresses but as it stands today it’s useful to have. I can see myself using from time to time even though it won’t be a staple part of my daily usage I can see the future potential although nothing has been officially announced.

Still To Come

Arment sets a very high standard for his work and isn’t afraid to hold back features that aren’t yet up to standard. Several features that didn’t make the 1.0 cut and have been held back for the moment. The list of features that are currently planned for future release that Arment is publically announcing:

  • Streaming (coming subject to iOS8 release)
  • iPad version
  • Mac version (less likely but not completely out of the question)

The biggest issue I can see is the lack of streaming support. Of course you can still flick the switch (to allow cellular downloads when you away from WiFi) and download episodes on the go but they will download in their entirety, rather than just stream the pieces they are about to play. Arment assured me this will be coming very soon with iOS8 and whilst I never stream, there are plenty of people that do and for them it may be a deal-breaker. (Albeit only for a few months) If that’s you, you won’t be waiting long.

Intangibles: The Arment Touch

It’s hard to put my finger on it but Arment and Shifty Jelly’s developers share a playful tongue-in-cheek that I’ve come to really appreciate. Here’s an extract from the Skeptic’s FAQ:

“Who are you? I’m Marco Arment, the person who makes Overcast. Hope you don’t mind that I used ‘I’ instead of ‘we’ here - it made sense for this to be human, rather than the way I upgrade to ‘we’ in legalese and the privacy policy so I don’t get in trouble if I hire someone in the future and forget to change the pronouns everywhere.”

Also the initial main page before you add your first podcast helpfully suggests that you ‘Add Podcast’ “Otherwise, this may not be useful…”

Overcast has a relaxed feel to it that makes it that little bit more enjoyable to use. It’s not a big thing perhaps but it’s refreshing if nothing else. The app also has a distinct Orange hue to it. When I asked Arment why that was he responded: “I’ve (started to) like red and orange recently, and red was too harsh…” so there you have it in case you were wondering…

If you’re a stickler for this sort of thing then you’ll also appreciate the attention to detail of the layout and font choices: all very pleasing to the eye. Castro also has this going for it putting Overcast and Castro out on their own ahead of the others in this respect at least.

Conclusion

Overcast has become my primary podcast client of choice for several months now. I’ve been gravitated towards the Smart Speed and intuitive controls and found myself becoming mildly annoyed when going back to the other podcast apps when putting this review together.

Arment has managed to move the bar another notch higher with Overcast whilst simultaneously lowering the barrier of entry for relative newcomers to the medium with a smoother interface, better podcast discoverability and it Turns OutTM Smart Speed is a pretty neat feature and now I can’t listen without it.

For those that love the simplicity of Castro but want something a bit more fully featured but still easy to use, then Overcast demands serious consideration.


  1. A more common business-like approach would be to identify market areas that are lacking and develop software for those where it is more likely to sell in high volume and make the most money. 

  2. Text can have its font size and type modified, backgrounds simplified, flow/pagination improved, marking read position etc., whereas audio can have its pitch, volume, speed modified, keeping track of play position as well as the possibility of a playlist like music. 

  3. I find it fascinating where each developer has chosen to place their most commonly used skip values. They range from the ultimate in configurability (every 5 seconds) to the trimmed down version of Overcast. Given the Seek Acceleration I think it’s less of an issue in Overcast. 

  4. Although the method used in Overcasts website is much like PocketCasts sharing feature which links to the server with a custom generated URL rather than a generic media-string query attached to an episode name URL. 




     

Twitter Debates

I’ve seen some truly horrible Twitter debates over the last few years and I’ve been involved in a few myself - just not for a while. I’ve stayed out because they don’t offer an outcome that I’m interested in. In the parlance that follows I have essentially chosen to leave the room more often than not. Thinking about it, there was a subconscious train of thought behind why and it’s taken a while for it to percolate down into this post.

Use Your Imagination For A Moment

Picture a room full of people, none of which you’ve met in person before. Each person can only say one full sentance at a time, everyone can talk at once and respond to any other persons sentance in whatever order they choose. Any person in the room can walk out at any time but comments made when they left the room are recorded for them to listen back later.

If it sounds like a cacophonic catastrophy that’s because it is. And THAT is how Twitter debates work, minus vocal tonality and visual gesturing which makes it easy to misinterpret how words are intended to be conveyed.

Debate vs Discussion

It’s generally considered rude to be interrupted and taking comments out of context is a well-know dirty practice in the media, yet in Twitter debates little regard can be definitively given to the context as reponses can only be directed to a specific 140 character comment. There’s also no indication when the other party is typing so it’s possible that faster typists or those in situations where they have time to respond more quickly1 can fire off multiple shots whilst the first party is still working on their first response.

In many respects it’s even impossible to call such discourse a debate at all. For it to be a structured debate you should have the following:

  • Nominate two people to talk to discuss the pros and cons of a specific issue (i.e. no other participants are allowed)
  • Each debater is provided a minimum amount of time to state their position without interruption
  • Each debater must allow the other an opportunity to respond without interruption
  • Once the debate has been fully delivered it may be opened up to anyone else to ask questions and each debater can choose to address them with answers

That’s Nice BUT I Don’t Want a Debate or a Discussion

More often then not I’ll post something I think is funny, topical or silly. I don’t really want a debate or a discussion about it. Feel free to start one of course but when people with tens of thousands of followers (i.e. not me) post that they like coffee (for example) they get all sorts of @mentions telling them why coffee is terrible or the one they drink is terrible or it gets personal and they are a terrible person for liking coffee or that they are a totally terrible person and its probaby because of the coffee. Meanwhile the original poster looks furtively around the room and wonders why they bothered saying anything about coffee in the first place.

Fearing reprisal the original poster refrains from responding and in the process of not responding is derided for not defending their position and eventually people either disengage completely from Twitter or just stop posting lest they get abused for having an opinion about anything.

They’re Not Trolls They’re Just at a Different Point on the Curve

I like to think that we’re all on a learning curve. Well, an infinite series of different learning curves that span all aspects of our lives, but yeah, a learning curve. Interacting with others on Twitter is an opportunity to engage with people but you have no idea where they are on their respective learning curve. They could have been on Twitter since day one, tweeted every day with dozens or hundreds of people, have learned how to balance opinions with their responses and learned to respect others, or they could be inexperienced, socially awkward and easily outraged.

I hate the terms “troll” or “jackal” because they’re simplistic, derogatory and dismissive. Most people just want to be heard and because of where they are on the learning curve may sometimes say something provocative in order to get a response from someone else. I try not to dismiss people in that situation because I used to be that person a long time ago and I learned that’s not the best way to get the attention that I was seeking. If I judge others that do that then I’m just judging how I used to be - albeit some time in the past. I never saw myself as abusive but then I am not the best to judge that of myself, let alone others.

I may well be my own harshest critic but then I also believe that everyone passes through that stage at some point. It’s only a question of when and how long they do it before they learn better.

No-one Makes You Follow Someone Else

We choose to follow who we choose to. If we don’t like what someone else is saying the answer is simple: don’t abuse them, don’t judge them, don’t be angry with them and certainly don’t track them down or tell them to die in a fire (although that last one’s become somewhat tongue-in-cheek of late). Unfollow them and move on. If you’re mingling at a party and you got bored with the conversation with one group you would just excuse yourself and go elsewhere or perhaps just quietly slip away… Is that so hard on Twitter without making a big fuss about it?

A: It’s not.

Twitter is a wonderful place to meet people you wouldn’t otherwise meet but it’s not a good place to have debate and a sub-optimal place to even have a discussion. Keep in mind everyone is in a different place on their learning curve with behaviour on Twitter. One final thing: why not cut some slack to the Twitter “personalities” that have thousands of followers they didn’t ask for. Chances are that hundreds of others will respond to their tweeted opinion anyway since all those other responders haven’t read this yet.


  1. Or they could be responding via a tablet or smartphone which is usually slower to type on or maybe they’re multi-tasking or wrangling children or have just started to drive between two locations and aren’t about to text and drive or if they’re driving they can’t use voice dictation due to screaming children in the back and the list goes on and on and on… 




     

Tangential

Recently I’ve wanted to just chat with people I’ve met on Twitter on either Facetime Audio or Skype. I mean, why not? After doing it a few times it TurnsOutTM that some of things we discussed were worthy of a podcast (IMHO). If Pragmatic is a show highly focused on the detailed discussion of a specific topic and attempts be useful to others, then Tangential is its polar opposite.

Each week or two I’ll bring together two different guests to talk about whatever they like. Odd as it sounds I’ve had a few requests to do a show like this, so I’m going to run this as an experiment and see how it goes. The shows tagline sums it up: “An unending conversation where every topic is a tangent from the last one. Embrace the chaos.”

I also add “No-one’s done this before have they?” because I know - it’s not a new idea for the world but it’s something I’ve never done before. For Exastential and Anodised there was always preparation and planning. Not this time.

Here’s the next twist: If you want to come on the show, just ask. I already have list of people that are keen to appear but if you want to chat, ask me via the feedback form and we’ll see what we can do.




     

jPlayer Integration

I recently added some features to this website that have attracted a little bit of attention and thought it might be helpful to go through one of them I’ve been asked about a few times in the hope that others could find it useful. Before I begin let me start by saying: this is just my way of achieving the desired result. It is by no means the ONLY way nor is it necessarily the BEST way. I found no how-to guides or anything for this it was just a matter of experimentation to get it working. Also this implementation is for integration with Statamic. If you’re using another platform there will be similar elements but clearly the final implementation details will differ.

There are two ways in which I wanted to use jPlayer (to take over from the standard HTML5 Audio player) and that was on the podcast episode listing and on an individual episode page. In order to keep my Statamic templates clean I set up a partial theme and add it to each of my template files: ‘podcast’ and ‘podcastepisode’ as such:

{{ theme:partial src="podcastplayer" count="{{ count }}" }}

In order to pass the correct episode reference I pass the count variable to the partial (since it’s embedded in an entry listing) since this critical to tell the episodes apart. I’ve left the code the same for consistency on the podcast episode template since in that template it’s only called once and I ignore it anyway. Of course, that’s up to how you want to handle it.

The key elements of the ‘podcastplayer’ partial are all in the DIVs:

<div id="jquery_jplayer_{{ count }}" class="jp-jplayer"></div>
<div id="jp_container_{{ count }}" class="jp-audio">...</div>

Obviously how you choose to set up your jPlayer is up to you (it’s very configurable) so I won’t bore you with the specifics of how I’ve implemented mine here.

The final piece is inserting the javascript. There’s multiple ways of doing it but I’ve chosen to insert it in another partial theme called ‘podcasthead’ which I add in my default.html layout:

{{ theme:partial src="podcasthead" }}

Because it’s the most important part of making this work, here it is with only a handful of irrelevant parts removed for simplicity. Some notes to bear in mind:

  • Don’t forget to add your links and styles based on how your jPlayer needs to look.
  • All of my podcasts are hosted under the sub-directory ‘podcasts’ hence I use segment_1 to conditionally add this code. I don’t want it added to every page unnecessarily.
  • I use segment_3 to check to see if you’re looking at a specific episode. If you are segment_3 will look like “Episode-3-turn-the-damn-light-off” or similar.
  • The ‘#jquery_jplayer_1’ in the individual podcast episode section is always ‘1’ since there’s only one podcast shown on an individual page. I also had other reasons for splitting them here but that’s another story for another post.
  • Note that the ‘title’ ‘_audiofolder’ ‘_audiofile’ variables are taken from each individual episodes markdown YAML header in the specific podcast sub-directory.
  • Note the use of ‘count’ to differentiate between the different jPlayer instances on the page.
  • Note that the entries listing content MUST match the settings for the page. In my case I’ve used a history of 10 episodes throughout for all of my podcasts. This needn’t be set to that depending upon your preferences.
  • I keep my jPlayer code in the _add-ons/jplayer directory but clearly this will depend on your own configuration.

{{ if segment_1 == "podcasts" }}
   {{ if segment_3 == "" }}
        {{ entries:listing folder="podcasts/{ _podcastfolder }" limit="10" }}
            <script type="text/javascript">
                $(document).ready(function(){
                    $("#jquery_jplayer_{{ count }}").jPlayer({
                        ready: function (event) {
                            $(this).jPlayer("setMedia", {
                                title: "{{ title }}",
                                mp3: "{{ _audiofolder }}/{{ _audiofile }}"
                            });
                        },
                        play: function() { // To avoid multiple jPlayers playing together.
                            $(this).jPlayer("pauseOthers");
                        },
                        swfPath: "/_add-ons/jplayer",
                        supplied: "mp3",
                        wmode: "window",
                        preload: "none",
                        smoothPlayBar: true,
                        remainingDuration: true,
                        toggleDuration: true,
                        cssSelectorAncestor: "#jp_container_{{ count }}"
                    });
                });
            </script>
        {{ /entries:listing }}
    {{ else }}
            <script type="text/javascript">
                $(document).ready(function(){
                    $("#jquery_jplayer_1").jPlayer({
                        ready: function (event) {
                            $(this).jPlayer("setMedia", {
                                title: "{{ title }}",
                                mp3: "{{ _audiofolder }}/{{ _audiofile }}"
                            });
                        },
                        swfPath: "/_add-ons/jplayer",
                        supplied: "mp3",
                        wmode: "window",
                        preload: "none",
                        smoothPlayBar: true,
                        remainingDuration: true,
                        toggleDuration: true
                    });
                });
            </script>
    {{ endif }}
{{ endif }}

That should be enough to get you running. Let me know how you go and good luck!




     

AAC Now Live

As previously discussed the HE-AAC v2 feed of all Podcasts hosted on TechDistortion are now live. Each is linked individually on their main podcast page as well as on individual episodes and their pages. The existing web player will remain working off the original MP3 feed as will iTunes in an effort to avoid confusion. It’s a little bit of extra work but not too much that will hopefully help those users in both situations. As always, please let me know if there are any issues and if the changes were of any benefit to you personally as I’d love to hear your feedback.

Main Page AAC View Individual Episode AAC View