<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>[Time code];</title>
	
	<link>http://www.subfurther.com/blog</link>
	<description>A Digital Media Development Blog</description>
	<lastBuildDate>Sun, 12 May 2013 11:50:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/timecode" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="timecode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Perfect Example of Unicode Character ‘PILE OF POO’ (U+1F4A9)</title>
		<link>http://www.subfurther.com/blog/2013/05/12/perfect-example-of-unicode-character-pile-of-poo-u1f4a9/</link>
		<comments>http://www.subfurther.com/blog/2013/05/12/perfect-example-of-unicode-character-pile-of-poo-u1f4a9/#comments</comments>
		<pubDate>Sun, 12 May 2013 11:50:04 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2932</guid>
		<description><![CDATA[The Colony Drop Twitter account just passed along this little gem from Tumblr (transcription below): It reads: what is emojis? those emoticons? why are they classist? Emojis are emoticons that can only be typed by iPhones and read by iPhones and iPod Touches. They cannot be typed or read by computers or non-smart phones. The [...]]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://www.colonydrop.com">Colony Drop</a> <a href="https://twitter.com/colonydrop">Twitter account</a> just <a href="https://twitter.com/colonydrop/status/333344402212810752">passed along</a> this little gem from Tumblr (transcription below):<br />
<img src="http://25.media.tumblr.com/f15d2a304c1c16f00b23c8f4bbdfe470/tumblr_mmlzdyF0WR1s02y88o1_500.png" width="500" height="86"/><br />
It reads:</p>
<blockquote><p><strong>what is emojis? those emoticons? why are they classist?</strong><br />
Emojis are emoticons that can only be typed by iPhones and read by iPhones and iPod Touches. They cannot be typed or read by computers or non-smart phones. The emoji is inherently classist because it excludes people who do not own expensive Apple products. Most people cannot afford iPhones and iPod Touches… when you type an emoji, you type a symbol that only financially advantaged people can read. That is classism.</p></blockquote>
<p><strong>Wow.</strong> That is a <em>lot</em> of stupid packed into one paragraph. The first sentence alone has at least four factual errors (emoji are not emoticons <i>per se</i>, the plural of emoji is just &#8220;emoji&#8221;, they can be entered by devices other than iPhones, they can be read by many devices), and it doesn&#8217;t get better after that (the poster has clearly never heard of Unicode or the free-with-contract iPhone 3GS).</p>
<p>Obviously, it was beyond the poster&#8217;s ability to look up the <a href="http://en.wikipedia.org/wiki/Emoji">Emoji entry on Wikipedia</a>.</p>
<p>I&#8217;d love to quote Colony Drop&#8217;s witty comment from their tweet but, alas, WordPress can&#8217;t handle Unicode emoji!</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/z3EhuxZPRLg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/05/12/perfect-example-of-unicode-character-pile-of-poo-u1f4a9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Never Mind the WWDC, Here’s the CocoaConfs</title>
		<link>http://www.subfurther.com/blog/2013/05/08/never-mind-the-wwdc-heres-the-cocoaconfs/</link>
		<comments>http://www.subfurther.com/blog/2013/05/08/never-mind-the-wwdc-heres-the-cocoaconfs/#comments</comments>
		<pubDate>Thu, 09 May 2013 01:20:32 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[skullduggery!]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2925</guid>
		<description><![CDATA[So now CocoaConf Alt isn&#8217;t happening. A story at Loop Insight lays the blame more clearly at Apple&#8217;s feet for pressuring the Intercontinental hotel, which apparently has some contractural relationship with Apple during WWDC (it&#8217;s not said what&#8230; possibly housing Apple employees or off-site partner meetings?), and that this contract forbids the hotel from hosting [...]]]></description>
				<content:encoded><![CDATA[<p>So now <a href="http://cocoaconf.com/blog/alt-2013-canceled">CocoaConf Alt</a> isn&#8217;t happening. A story <a href="http://www.loopinsight.com/2013/05/08/cocoaconf-alt-canceled-for-wwdc/">at Loop Insight</a> lays the blame more clearly at Apple&#8217;s feet for pressuring the Intercontinental hotel, which apparently has some contractural relationship with Apple during WWDC (it&#8217;s not said what&#8230; possibly housing Apple employees or off-site partner meetings?), and that this contract forbids the hotel from hosting a &#8220;competing&#8221; event.</p>
<p>I&#8217;ve spoken at nearly all the CocoaConf conferences, and I have no reason to doubt Dave&#8217;s version of these events. Indeed, while some commenters would like to portray this as a spat solely between the Intercontinental and CocoaConf – and leave Apple out of it – that position doesn&#8217;t square with the facts. If the Intercontinental knew they were contracturally prohibited from hosting CocoaConf Alt, they wouldn&#8217;t have signed a contract with CocoaConf in the first place, right? Daniel Jalkut <a href="http://bitsplitting.org/2013/05/08/you-can-check-out-anytime-you-like/">makes the best case for letting Apple off the hook</a>, suggesting that someone at either the Intercontiental or Apple got a trigger finger and killed the event when they didn&#8217;t necessarily need to. That the Intercontinental realized it was in a conflict-of-interest scenario after the fact is possible, but it&#8217;s no more plausible than the idea that Apple doesn&#8217;t like anyone riding on their coattails and sent the hotel management a nastygram.</p>
<p>For what it&#8217;s worth, that latter scenario is the one that rings true to me. (Or, to haul out a tag I haven&#8217;t used in a while, <a href="/blog/category/skullduggery!">nefarious skullduggery!</a>).</p>
<p><span id="more-2925"></span></p>
<p>But what&#8217;s done is done, and if Apple stomping on CocoaConf Alt adds to this year of WWDC discontent, so be it. It&#8217;s a little surprising to continue to see complaints and hand-wringing over the technical problems of the WWDC sales (see <a href="http://www.tuaw.com/2013/05/08/developers-react-to-wwdc-ticketing-issues/">TUAW</a> and <a href="http://www.coreint.org/2013/05/episode-87-just-kidding-you-do-have-a-ticket/">Core Intuition</a>), when the underlying problem is a massive mismatch of supply and demand for tickets to the event. If nobody had gotten server errors and the conference had sold out in 20 seconds instead of 60, would that have really been any better?</p>
<p>Maybe this is the year that WWDC jumps the shark for a lot of us? Maybe it already has?</p>
<p>I had <a href="http://www.subfurther.com/blog/2011/03/29/taking-the-world-out-of-wwdc/">my say about WWDC two years ago</a>, hoping for some sort of radical change, and Daniel Jalkut does me one better by <a href="http://bitsplitting.org/2013/04/25/end-wwdc/">calling for an end to it altogether</a>. When so many of the things that used to define WWDC – meeting up with colleagues who are there every year (but who didn&#8217;t get tickets this time), Q&#038;A at the end of the sessions (dropped years ago in favor of one-way proclamations from Apple) – it starts to be hard to see how spending $3-5,000 makes more sense than just watching the videos, especially for that majority of attendees who never visit the labs.</p>
<p>So, I&#8217;m down on WWDC right now, in part of a general disquiet with the Apple platforms in general. They&#8217;ve released literally nothing this year, except an iPad with 128 GB of storage (the model I&#8217;m typing this on, by the way), ignoring badly out-of-date offerings like the Mac Pro, and all the creative professional apps like Logic and Aperture that you&#8217;d want to run on such a machine. <i> Aside: If I were a full-time video professional, I would find it difficult to justify staying on the Mac platform, as there is no sense that Apple (the only supplier of Mac hardware) will offer professional-appropriate hardware in the future. An iMac with a daisy-chain of expensive Thunderbolt peripherals – assuming such things come to market at all – is deeply unappealing, and traps the owner with a non-upgradable video card and (in the lower models) no RAM expansion. A Hackintosh is more sensible, and once you go down that road, it&#8217;s worth asking if it&#8217;s worth giving up the fight and just switching to Windows. After all, the aforementioned Logic and Aperture have long languished without updates, something the <a href="https://www.facebook.com/MacProsPlease/posts/607813495898419">&#8220;We Want A New Mac Pro&#8221; Facebook page asked Apple about</a>… and got stonewalled.</i></p>
<p>So what are we expecting at WWDC? The inevitable MacBook refresh, and <a href="http://www.macrumors.com/2013/05/01/apple-engineers-working-overtime-on-ios-7s-deforstallization/">an end to Rich Corinthian Leather</a>. Yawn.</p>
<p>I never planned to go to WWDC this year, or CocoaConf Alt, and am happy to keep my Summer free. I&#8217;m actually thinking pretty seriously about applying my conference budget for the year to <a href="http://www.streamingmedia.com/Conferences/West2013/">Streaming Media West</a> in November to dig more deeply into livestreaming. (And yes, I&#8217;m aware that <a href="http://www.streamingmedia.com/conferences/East2013/">Streaming Media East</a> is just two weeks away, but conflicts with an already-planned personal trip to <a href="http://acen.org">Anime Central</a> next week.)</p>
<p>In the Fall, <a href="http://cocoaconf.com/">CocoaConf</a> will be doing conferences in Portland, Columbus, Boston, and Atlanta. The late Summer / early Fall iOS talks are always tricky to do, because there&#8217;s usually a new verison of iOS that&#8217;s been announced at WWDC and is in beta, but which is still under NDA. So you can&#8217;t talk about the new stuff, and what you can talk about is old news.</p>
<p>One way to deal with that problem is to not limit talks exclusively to touring iOS frameworks. Following up my CocoaConf San Jose talk on Core Audio that touched on <A href="http://audiob.us">Audiobus</a>, I&#8217;m thinking I may pitch an entire talk on that remarkable inter-application audio system (now supported by 180+ apps, last I saw!). I&#8217;ll need that much time to get into the developer program and get some good demos whipped up.</p>
<p>I had another thought for an NDA-proof topic: audio and video encoding for the iOS platforms. I could haul out Handbrake and Compressor (and <code>AVAssetExportSession</code> and <code>AVAssetWriter</code> in code) and mess with encoding formats and bitrates and get into the nitty-gritty of the various formats, what hardware they work on, their advantages and trade-offs. This kind of stuff scratches my A/V producer itch nicely, though I find it&#8217;s often a challenge to sell developers on the art and science of digital media. There&#8217;s a &#8220;just show us the code&#8221; mentality out there, one that sometimes hits the wall of &#8220;understand what the code does&#8221; in practice when you don&#8217;t truly understand the problem domain. <code>ExtAudioFileCreateWithURL()</code> is all well and good until you try to put big-endian PCM in a WAV file, or little-endian into an AIFF, or you don&#8217;t understand why caption tracks aren&#8217;t preserved by the <code>AVAssetExportSession</code>, or why your dissolves and primary/seconary movement are artifacting all over the place.</p>
<p>I like to come into each conference with something new, and having two new talks for the Fall tour fits the bill nicely. That leads to the question about teaching classes for the tutorial day of CocoaConf. Last year, I did my all-day Core Audio class three times, and this Spring I did an iPad Productivity class (mostly on <code>UIDocument</code>, along with topics like inter-application communication and printing) in Chicago and DC. I continue to get requests for Core Audio (and reprised it in San Jose a few weeks back), even though I think iPad Productivity has a wider pull. So maybe both of those will show up on the Fall tour, just in different cities (I already did Core Audio in Columbus and Portland, so those cities probably get iPad Productivity).</p>
<p>So, yes to CocoaConfx4 and Streaming Media West, no thanks to WWDC.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/vnNu9I-VT6U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/05/08/never-mind-the-wwdc-heres-the-cocoaconfs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>April 2013: Kind of talked out</title>
		<link>http://www.subfurther.com/blog/2013/04/29/april-2013-kind-of-talked-out/</link>
		<comments>http://www.subfurther.com/blog/2013/04/29/april-2013-kind-of-talked-out/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 17:57:16 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[coreaudio]]></category>
		<category><![CDATA[httplivestreaming]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2907</guid>
		<description><![CDATA[And a week late, I&#8217;m finally writing my follow-up post to CocoaConf San Jose. Not that anybody&#8217;s missing anything, I think, because I&#8217;ve been doing the same two hour-long sessions for the CocoaConf Spring 2013 tour: &#8220;Core Audio in iOS 6&#8243; and &#8220;Mobile Movies with HTTP Live Streaming&#8221;. I&#8217;ve tweaked each repeatedly, although this time [...]]]></description>
				<content:encoded><![CDATA[<p>And a week late, I&#8217;m finally writing my follow-up post to <a href="http://cocoaconf.com/sanjose-2013/home">CocoaConf San Jose</a>. Not that anybody&#8217;s missing anything, I think, because I&#8217;ve been doing the same two hour-long sessions for the CocoaConf Spring 2013 tour: &#8220;Core Audio in iOS 6&#8243; and &#8220;Mobile Movies with HTTP Live Streaming&#8221;. I&#8217;ve tweaked each repeatedly, although this time the only one with slides new enough to post to Slideshare is <a href="http://www.slideshare.net/invalidname/core-audio-in-ios-6-cocoaconf-san-jose-april-2013">the Core Audio one</a>, since I added some slides at the end to do an overview of <a href="http://audiob.us">Audiobus</a>.</p>
<p>I&#8217;d hoped to get a full-blown Audiobus demo ready in time for the conference, but client work took priority, and in the midst of an 11-hour flight delay in Denver, I didn&#8217;t have the tools or the stamina to pull it off.</p>
<p>Actually, I&#8217;m thinking I may work on digging into Audiobus enough to get a whole one-hour talk on it ready for CocoaConf&#8217;s Fall tour. Doing so would also help me deal with the fact that some of the Fall conferences will likely fall inside the iOS 7 / OS X 10.9 NDA period, leaving us unable to talk about the new hotness from Cupertino. Audiobus is an interesting new topic that would not be encumbered by the Cupertino cone of silence.</p>
<p><span id="more-2907"></span></p>
<p>I also continued to freshen the HTTP Live Streaming talk over the half-dozen or so times I gave it, but instead of spending more time (like people asked me to) on the iOS code part of the topic &#8212; which is pretty much a trivial use of the Media Player or AV Foundation frameworks &#8212; I found it was more interesting to track the spread of HLS to other platforms, such as over-the-top boxes like the Roku, for which I <a href="http://www.subfurther.com/blog/2013/03/18/rok-rok-rok-rok-roku-roll-high-school/">whipped up a demo</a> that uses the HLS streams created for the iOS demos. HLS has continued to pick up outside adoption over the last 12 months, including <a href="http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Adobe-to-add-HLS-and-DASH-to-Primetime-89149.aspx">Adobe adding it to their Primetime product last week</a>.</p>
<p>Thanks probably to the clout of the iOS ecosystem, HLS seems to be becoming the <i>de facto</i> streaming standard for the time being, for better or worse. MPEG-DASH seemed like it had the best shot at dislodging HLS (thanks in part to its pedigree, along with the manifest danger of having much of the streaming video world clinging to a semi-standard and beholden to Apple&#8217;s capriciousness), but Streaming Media argues that <a href="http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Commentary-DASH-Is-Overrated-Enough-Already!-88987.aspx">DASH is overrated</a>, and that the format problems it hopes to solve are already addressed by existing products, such as the current streaming servers from Wowza, Microsoft, Adobe, and Real. My open skepticism that MPEG-DASH would be the <a href="http://xkcd.com/927/">&#8220;15th Standard&#8221;</a> appears to be playing out.</p>
<p>I&#8217;ve got one more conference coming up, <a href="http://mobidevdaydetroit.com">MobiDevDay</a>, this coming Saturday (May 4) in Detroit. My talk there is going to be a high-level overview of all the media frameworks on iOS, with an eye towards helping you figure out the right one for your app, where there&#8217;s overlap and where there&#8217;s one right tool for the job.</p>
<p>Gotta tell ya, esteemed blog readership, I&#8217;m pretty worn out from juggling an every-other-week conference tour and multiple clients who needed their projects to be production-ready yesterday. Oh, and a five-hour round-trip to teach the occasional session of the <a href="http://devdet.com">Develop Detroit</a> class on the other side of the state. I like getting away, but it&#8217;ll be good to take a couple months off and stay at home for the Summer </p>
<p>No, I&#8217;m not going to WWDC. Didn&#8217;t try to get a ticket (too much drama), and don&#8217;t feel like it&#8217;s worth the expense now that I&#8217;m pretty comfortable with the platform and really just need to keep up with Apple&#8217;s annual changelog. Actually, with my rapidly-developing interest in livestream production, I&#8217;d find it far more valuable to go to the Streaming Media conference. I&#8217;m too tired to go to <a href="http://www.streamingmedia.com/conferences/East2013/">Streaming Media East</a> in a few weeks (especially as it&#8217;s right after my weekend at <a href="http://acen.org/">Anime Central</a>), but I am thinking fairly seriously about saving up for a trip to <a href="http://www.streamingmedia.com/conferences/West2013/">Streaming Media West</a> in November, a trip which would also give me a chance to catch up with a number of friends and colleagues in the LA area. So… we&#8217;ll see.</p>
<p>Summer projects include more livestreaming experimentation, probably starting with <a href="http://www.wowza.com/pricing/trial">Wowza&#8217;s 30-day trial</a> (likely on Amazon EC2), so I can assess the value (and cost) of getting away from UStream. Not that I dislike Ustream, but there are reasons I might want to own my own infrastructure, rather than having UStream branding, their ads, and their copyright bots getting pissy with me if I run a popular movie trailer or an <a href="http://en.wikipedia.org/wiki/Anime_music_video">AMV</a> in my pre-show. I also want to do some trial runs for different kinds of stream content: I&#8217;ve done <a href="http://www.ustream.tv/recorded/25257263">iOS gaming</a> and <a href="http://www.ustream.tv/recorded/27408407">conference talks</a>, but I&#8217;m also thinking of some live coding demos, some entertainment and fun stuff, etc. There&#8217;s also work to do in reimagining the stream for full-screen viewing: what do you do differently for your video stream when the target device is an HDTV (via a Roku or Apple TV) rather than an embed in a browser window?</p>
<p>So, Spring and Summer, 2013: less talking, no writing, more clients, more streaming. Sounds like a plan.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/f1z8JYkYDGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/04/29/april-2013-kind-of-talked-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can’t Buy a Thrill</title>
		<link>http://www.subfurther.com/blog/2013/04/14/cant-buy-a-thrill/</link>
		<comments>http://www.subfurther.com/blog/2013/04/14/cant-buy-a-thrill/#comments</comments>
		<pubDate>Sun, 14 Apr 2013 14:46:24 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[appstore]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[postedfromipad]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2891</guid>
		<description><![CDATA[MacWorld ran a story last week to remind readers that A $5 App Isn&#8217;t Expensive, and imploring readers to stop being such cheapskates for the sake of the App Store economy. Earth to MacWorld: It&#8217;s already too late. The market has spoken, and it refuses to pay for apps, even when the toxic side-effects of [...]]]></description>
				<content:encoded><![CDATA[<p>MacWorld ran a story last week to remind readers that <a href="http://www.macworld.com/article/2032847/a-5-app-isnt-expensive-customers-need-to-help-fix-the-app-store-economy.html">A $5 App Isn&#8217;t Expensive</a>, and imploring readers to stop being such cheapskates for the sake of the App Store economy.</p>
<p>Earth to MacWorld: It&#8217;s already too late. The market has spoken, and it refuses to pay for apps, even when the toxic side-effects of that are manifest.</p>
<p>MacWorld&#8217;s piece comes in part as a response to Michael Jurewitz&#8217;s <a href="http://jury.me/blog/2013/3/31/understanding-app-store-pricing-part-1">five-part series on app pricing</a>, posted on the eve of his return to Apple (and, presumably, a lot more circumspection about his future blogging). <a href="http://alpha.app.net/jury">Jury</a> sees the app pricing race to the bottom as a self-inflicted wound and urges developers to charge what their apps are worth.</p>
<p>Great advice… for anyone still around to take it.<br />
<span id="more-2891"></span></p>
<p>As a developer, it&#8217;s easy to get outraged at cheapskate users who complain that a $1.99 app is a &#8220;rip off&#8221; because it has a bug or doesn&#8217;t do what the user expected it to from the description. It&#8217;s galling that the comments on the MacWorld piece justify stinginess (or outright piracy) on the grounds that iOS apps don&#8217;t easily afford a &#8220;trial&#8221; system. To say that you got a bad $3 app once and can never trust app purchasing again is like saying you once had a bad burger at McDonalds and will therefore never eat in any restaurant again (or maybe every restaurant should have free samples of everything on its menu available at all times).</p>
<p>Yeah, OK, I could go on like this for a while, but the fact is that appealing to the better nature of the general public usually doesn&#8217;t work out. We are stuck with what our customers believe, and that means that they largely aren&#8217;t willing to pay for apps.</p>
<p>So what&#8217;s the proper response? Obviously: don&#8217;t write apps for sale in the App Store anymore. <b>This has already happened.</b> But it hasn&#8217;t manifested itself as a mass migration off the iOS platform (what, like Android users are any more willing to pay for apps?), but instead a migration into what one article (that I can&#8217;t find!) called the &#8220;middle class of developers making apps for corporate clients&#8221;.</p>
<p>Of all the full-time iOS developers I know, almost none of them work primarily in writing apps for sale to end-users. Nearly all of them, myself included, work for clients for whom an app makes sense in some other business model. For example, an app that lets end-users make use of some subscription service (like <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fnetflix%252Fid363590051%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Netflix</a> or <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fdropbox%252Fid327630330%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Dropbox</a>), or a physical product (the remote control app for my <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Froku%252Fid482066631%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Roku</a>). Or an app that will make the business&#8217; own employees more productive. Or an app that flogs the company&#8217;s products. All of these apps generate value for the paying customer, but that&#8217;s <i>the company that&#8217;s hiring us,</i> not the end-user.</p>
<p>In other words, while there isn&#8217;t a competent business accounting app for the iPad (an equivalent to <a href="http://www.amazon.com/gp/product/B008S0IV9G/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B008S0IV9G&#038;linkCode=as2&#038;tag=tico07-20">QuickBooks</a> or <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Faccountedge-basic%252Fid439307746%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30">AccountEdge</a>, and not just a companion app to those desktop programs), there are plenty of apps to help multi-level marketing professionals <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Famway-business-app%252Fid336417923%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">maximize their downlines</a>. And that&#8217;s because Amway will pay developers for their time, and the &#8220;$5 apps are a ripoff&#8221; crowd won&#8217;t.</p>
<p>True story: I was going over a GUI design for a client&#8217;s Mac app in a group chat and I said &#8220;man, I&#8217;d love a touch version of this on an iPad.&#8221; The client said they&#8217;d love to do it, but could never charge enough on the iPad to cover the development costs.</p>
<p>Think about that for a second. With <a href="http://en.wikipedia.org/wiki/IPad">100 million</a> iPads sold since 2010, versus a Mac <a href="http://aaplinvestors.net/stats/mac-installed-base/">installed base</a> of about 60 million, the iPad market is nearly twice as large, yet cannot justify development or even porting.</p>
<p>As a user, I&#8217;d like to ditch OS X someday and go entirely iOS &#8212; I cling to the belief that iOS can get better faster than OS X gets worse &#8212; but that can&#8217;t happen if essential apps I need are never made for the platform. The lack of productivity apps for iPad is part of the reason I started teaching a class on the iOS productivity APIs at CocoaConf, but raising awareness and enthusiasm for this stuff doesn&#8217;t solve the real problem. If developers can&#8217;t recoup their investments in these apps, because the pricing power in the App Store has collapsed, then we won&#8217;t develop them at all.</p>
<p>A few years back, we figured Android apps were a non-starter because the Android user base would never pay for stuff. Who knew that this would apply to iOS apps as well?</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/xFUUhVMgfa8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/04/14/cant-buy-a-thrill/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Podblathering</title>
		<link>http://www.subfurther.com/blog/2013/03/26/podblathering/</link>
		<comments>http://www.subfurther.com/blog/2013/03/26/podblathering/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 01:27:10 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[content]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[podcasting]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2846</guid>
		<description><![CDATA[Author and speaker Daniel Steinberg always keeps his talks fresh, revising them and making changes every time he gives them. CocoaConf DC 2013 was at least the third time I&#8217;d heard his keynote &#8220;A Pocketful of Patterns&#8221; (whose framing device is based, in part, on my own skepticism about design patterns), but he caught my [...]]]></description>
				<content:encoded><![CDATA[<p>Author and speaker <a href="http://dimsumthinking.com">Daniel Steinberg</a> always keeps his talks fresh, revising them and making changes every time he gives them. <a href="http://www.cocoaconf.com/dc-2013/home">CocoaConf DC 2013</a> was at least the third time I&#8217;d heard his keynote &#8220;A Pocketful of Patterns&#8221; (whose framing device is based, in part, on my own skepticism about design patterns), but he caught my attention with this little pattern, showing a problem and a good solution:</p>
<blockquote><p>What do you hate about most Cocoa Podcasts? They tend to be way too long, rambly, unfocused, self-indulgent. Therefore, if I were to produce a podcast it would be focused on the audience.</p></blockquote>
<p>OSEG, so true. So I <a href="https://twitter.com/invalidname/status/315086922492047360">tweeted it</a> right then and there:</p>
<p><a href="http://www.subfurther.com/blog/wp-content/uploads/2013/03/Screen-Shot-2013-03-26-at-5.46.10-PM.png"><img src="http://www.subfurther.com/blog/wp-content/uploads/2013/03/Screen-Shot-2013-03-26-at-5.46.10-PM-300x116.png" alt="Tweet from invalidname: &quot;Yay. @dimsumthinking finally told the truth about most developer podcasts: they&#039;re too long, unfocused, and unedited. #cocoaconf&quot;" width="300" height="116" class="alignnone size-medium wp-image-2847" /></a></p>
<p>Take a look at <a href="https://twitter.com/invalidname/status/315086922492047360">the tweet details</a> and you&#8217;ll see a long trail of reactions, including those from Cocoa podcasters <a href="https://twitter.com/casademora">Saul Mora</a> of <a href="http://nsbrief.com">NSBrief</a> and <a href="https://twitter.com/rentzsch">Wolf Rentzsch</a> and <a href="https://twitter.com/apontious">Andrew Pontious</a> of <a href="http://www.edgecasesshow.com/">Edge Cases</a>.</p>
<p>So what&#8217;s the beef that Daniel and I have? Actually, it starts back at <a href="http://www.cocoaconf.com/chicago-2013/home">CocoaConf Chicago</a>, and a flippant question I asked as the moderator of &#8220;Reverse Q&#038;A&#8221;, where we take a panel of speakers and have them ask questions of the audience instead of the usual way around. Shifting topics with a segue, I asked &#8220;what&#8217;s the deal with all these developer podcasts anyways? why do we have so many?&#8221;</p>
<p>And the answer I got back was: &#8220;it&#8217;s easier than blogging.&#8221;</p>
<p><span id="more-2846"></span></p>
<p><br/></p>
<h3>Skyping It In</h3>
<p>That answer kind of floored me, but in the past few weeks, it actually seems to make a certain somewhat cynical sense. Let me give you an example:</p>
<p>Driving from CocoaConf back to the Baltimore airport (yes, CocoaConf DC was right next to Dulles, but getting a nonstop from Grand Rapids to BWI was actually easier and much cheaper), I listened to the <a href="http://atp.fm">Accidental Tech Podcast</a> with iOS/Mac luminaries Marco Arment, Casey Liss, and John Siracusa, in part because I saw that they were covering Michael Tyson&#8217;s revolutionary <a href="http://audiob.us/">Audiobus</a>. The gist of the discussion was that it is rather surprising that Apple not only approved of Audiobus&#8217; enabling of real-time inter-application audio communication on iOS (in contrast to iOS&#8217; usual locked-down, single-app mindset), but that Apple even updated GarageBand to add Audiobus compatibility.</p>
<p>OK, so far so good. But then they got into the topic of how Audiobus can even work. There are two good ways to answer this question:</p>
<ol>
<li>With a correct answer</li>
<li>By saying &#8220;I don&#8217;t know&#8221;</li>
</ol>
<p>There is also a very bad way to answer this question:</p>
<ol>
<li value="3">By pulling a wrong answer out of thin air</li>
</ol>
<p>Of course, I wouldn&#8217;t be writing this if they hadn&#8217;t gone with option #3, speculating that Audiobus probably opened a network port and communicated with sockets. It&#8217;s not an unreasonable answer, but it should be suspicious because of its obviousness: that approach to inter-process communication has been used on Unix for <strong>decades</strong> (we did it at Pathfire in the mid-90&#8242;s), and is prominently featured in the classic <a href="http://beej.us/guide/bgipc/">Beej&#8217;s Guide to Unix Interprocess Communication</a>. And the reason listeners should be suspicious was that if it were that easy on iOS, it probably would have been done a long time ago.</p>
<p>The right answer, for what it&#8217;s worth, is that Michael discovered a novel way of using MIDI to send arbitrary blocks of data across the MIDI bus, which is accessible by all background applications. <a href="https://twitter.com/Flunkwerx">@flunkwerx</a> pointed me to <a href="http://atastypixel.com/blog/thirteen-months-of-audiobus/#more-2582">Michael&#8217;s blog post</a> where he spells out this key discovery, and how it led to creating Audiobus.</p>
<p>OK, so long story for one mistake, but I think it&#8217;s unfortunately typical of the norm for the structure Cocoa podcasts. We have a regular set of personalities who expound on their thoughts in a group conversation, which is then converted as-is into an MP3 file and posted to the podcast feed. If they were blogging, any of them could have taken a few minutes to research and possibly find Michael&#8217;s blog. If they were livestreaming, an audience member in the chat room might well have corrected them, as often happens on shows like <a href="http://twit.tv/mbw">MacBreak Weekly</a>. But with no time for upfront research and planning and no feedback loop, giving wrong answers that stay wrong is likely inevitable.</p>
<p>For what it&#8217;s worth, Daniel edits a podcast where every once in a while one of the hosts needs to pause to research something more before giving an opinion or providing a reference &#8211; &#8220;Hold on,&#8221; they say. And then while the recording runs they do whatever research they need to. &#8220;OK&#8221;, they say when they find it. They reset their answer and go on. The gap is easily edited out later, and the podcast is much more useful to the listener because it&#8217;s actually correct. Problem solved.</p>
<p><br/></p>
<h3>The Man Without A Plan</h3>
<p>But Daniel&#8217;s slide quoted above doesn&#8217;t say anything about being wrong. He&#8217;s got a completely different set of complaints: length, self-indulgence, and rambling. Those are probably endemic to the format that most Cocoa podcasters have chosen. Which begs an even more important question: why did they choose that format?</p>
<p>Or… did they even make a choice at all?</p>
<p>In creating media, it&#8217;s common to talk about three phases of production:</p>
<ol>
<li><strong>Pre-production</strong> &#8211; Coming up with the original idea, planning how you&#8217;ll accomplish it, writing, budgeting, hiring, etc.
<li><strong>Production</strong> &#8211; The actual making of the thing: recording, filming, acting, performing.
<li><strong>Post-production</strong> &#8211; Additional work done after the production stage: editing, mixing, fixing, effects, titles, re-encoding, etc.
</ol>
<p>When so many podcasts are following the same format — a set group of personalities discussing the topics du jour — it&#8217;s fair to ask whether the first step has been skipped entirely. Is there any plan involved at all, any specific result that is meant to be achieved? Or does the next Cocoa podcaster do his podcast this way because all the other podcasts he listens to do it this way?</p>
<p><br/></p>
<h3>On And On And On</h3>
<p>And the last step is commonly skipped as well. Back on my original tweet, you&#8217;ll notice that several of the objections raised involve how difficult it would be to edit the recorded discussion. Overwhelmingly, Cocoa podcasts seem to be taken as-is and posted to the internet. Every sidetrack, every corny joke (seriously, when a product is mentioned as being &#8220;not dead yet&#8221;, you really don&#8217;t have to go into a <i>Monty Python and the Holy Grail</i> bit… you&#8217;re not that funny), every dead-end conversation gets equal prominence as the gems of insight if the whole thing is just dumped on listeners.</p>
<p>The result is that these podcasts are commonly 90 minutes long, sometimes two hours, sometimes longer. How is it that these things are as long as a movie, yet don&#8217;t deliver nearly as much value? Might I suggest that if David Lean can tell the life story of Lawrence of Arabia in three hours, you should need a lot less than that to tell me why Apple would never make a flat-screen TV.</p>
<p><br/></p>
<h3>You&#8217;re Right! We&#8217;re All Individuals!</h3>
<p>The other problem with these unstructured pundit-fests is that they&#8217;re contributing to a sort of groupthink in the Cocoa developer community. If someone were to go back to step 1, pre-production, and say &#8220;I&#8217;m going to make a podcast that challenges conventional wisdom about iOS development&#8221;, I&#8217;d want to listen to that. If someone set out to make an iOS podcast about that was entirely postmortems of successful or failed projects by interviewing their developers, I&#8217;d want to listen to that. If someone wanted to create a podcast featuring female and minority developers that are absent from all these other podcasts (notice my deliberate use of &#8220;he&#8221; three paragraphs ago), I&#8217;d subscribe. Those would probably bring some new ideas to the fore.</p>
<p>But another podcast where authors or other personalities speculate about rumors, rant against skeuomorphism, ascribe every mean-spirited Apple decision of the last five years to Scott Forstall (or the absurdly unfair and misguided caricature that&#8217;s been made of him), and spout conventional wisdom about &#8220;how Apple works&#8221;? <strong>Pass.</strong></p>
<p><br/></p>
<h3>The Macintosh Way</h3>
<p>Guy Kawasaki got a whole book out of &#8220;The Macintosh Way&#8221;, meaning &#8220;the right thing, done the right way&#8221;. I like podcasts a lot, and I like Cocoa development. I think these are all the right thing, but so many of them are done the wrong way. So what would help?</p>
<p>First off, there really ought to be a genuine interest and passion for the concept and craft of podcasting itself. It is a remarkable irony that pundits on these shows can go on about the rigor and polish required to make great apps, and then insist on minimal-effort, uninspired, unpolished podcast production to actually create the podcast. If your users deserve great apps, why don&#8217;t your listeners deserve great podcasts?</p>
<p>Greatness requires beginning with the end in mind. Podcasts should start with a vision of what you want to accomplish. And there are a lot of metrics to consider:</p>
<ul>
<li><strong>Genre</strong> &#8211; Entertainment, academic, business development, community building, some combination of these, or something new altogether.</li>
<li><strong>Idiom</strong> &#8211; How does the listener experience the content? Interviews with different people, round table of the same personalities, a single speaker off the top of her head, a single speaker answering questions from listeners, one or more speakers working from a script, etc.</li>
<li><strong>Structure</strong> &#8211; How long should it be? Should it be broken in to specific segments (e.g., old news, upcoming announcements, feedback)?</li>
</ul>
<p>Great, that&#8217;s pre-production. What about production? How do you make that good? Here it&#8217;s more a question of craft, which means there are common best practices that can be followed:</p>
<ul>
<li>Use good microphones. The value of &#8220;good&#8221; varies: you don&#8217;t have to use Daniel&#8217;s $300 microphone, but you definitely shouldn&#8217;t use your laptop&#8217;s built-in mic, since it&#8217;ll pick up room noise and possibly the laptop&#8217;s fan. In a pinch, the handheld USB mic from your <i>Rock Band</i> game is better than nothing.</li>
<li>Try not to sound like Skype. It&#8217;s disorienting to have the full dynamic range of the locally-recorded speakers paired with the compressed, tinny, and sometimes flange-y sound of someone on Skype. We&#8217;ve become accustomed to it from old TV and radio where people would call in on their phones, but if all participants record themselves locally with something like <a href="http://www.rogueamoeba.com/audiohijackpro/">Audio Hijack Pro</a>, we can fix it in post.
<li>Watch your levels. If you clip (i.e., your signal goes over 100%), you <strong>can&#8217;t</strong> really fix it in post.</li>
</ul>
<p>Finally, post production. The step everyone seems to think they can skip, either because it&#8217;s too hard or because they don&#8217;t care (the first is untrue, and if the second is true I don&#8217;t think you should be podcasting at all). Audio editing software is not hard to use, and get you results quickly. Among the things you can do:</p>
<ul>
<li>Mixing. If all participants recorded on separate mics (or hijacked their local audio so you didn&#8217;t have to rely on the Skype version), here&#8217;s where you bring them all into the same room. Dick Wall of the <a href="http://javaposse.com">Java Posse</a> subtly moves each speaker a little bit right or left in the stereo field to create a sense of relative space. This is a trivial 10-second task in Audacity or GarageBand.</a>
<li>Normalize. Recorded too low? Have one speaker who was far away from his or her mic, such that either you can&#8217;t hear them, or you have to turn up the volume so loud that the rest of the speakers are uncomfortably loud? A quick trip through <a href="http://www.conversationsnetwork.org/levelator">The Levelator</a> fixes that.</li>
<li>Music. Having an opening theme, and music between segments, is immensely comforting to listeners. It&#8217;s a perfect framing device, and there are lots of royalty-free loops in iLife and on the web.</li>
<li>Introduce your episodes. Hands-free listeners will thank you for giving an episode number, name, and/or date right at the top of the show.</li>
<li>Tagging. iPod/iPhone users will see your podcast as a list of episode titles, usually cut off after 20 characters or so. If every episode&#8217;s title starts with &#8220;The Awesome Amazing Apple Podcast…&#8221;, users won&#8217;t be able to tell which is which.</li>
</ul>
<p><br/></p>
<h3>Don&#8217;t Listen to That, Listen to This!</h3>
<p>So I&#8217;ve done a lot of complaining. Now it&#8217;s time to hand out some plaudits. Here&#8217;s a look at my podcasts window in iTunes:</p>
<p><a href="http://www.subfurther.com/blog/wp-content/uploads/2013/03/Screen-Shot-2013-03-25-at-6.28.06-PM.png"><img src="http://www.subfurther.com/blog/wp-content/uploads/2013/03/Screen-Shot-2013-03-25-at-6.28.06-PM-300x273.png" alt="My Podcasts window in iTunes" width="300" height="273" class="size-medium wp-image-2861" /></a></p>
<p>Yeah, pretty telling that there are three Cocoa developer podcasts that I subscribe to that iTunes has stopped downloading because I haven&#8217;t listened to them. But scroll down and we&#8217;d find some good ones (at least given my own personal tastes… your mileage will of course vary based on your own interests):</p>
<ul>
<li><a href="http://skeptoid.com">Skeptoid</a> is probably the best one-person podcast I listen to. Host Brian Dunning puts in a lot of time upfront to research and write a script, which lets him be witty, thorough, and most importantly of all, <em>accurate</em>, which is crucial for his cause of debunking silly and sometimes dangerous pop culture beliefs.</li>
<li><a href="http://www.abc.net.au/radionational/programs/rearvision/">Rear Vision</a> is kind of a cheat to include on this list (it&#8217;s a weekly radio program from Australia) but it&#8217;s a great place to take inspiration. They have a gem of an idea — seeing current events through the perspective of the decades of history that led up to them — and narrate the show with the help of experts from around the world. Maybe you and I couldn&#8217;t do this without making it our day job, but it&#8217;s at least another way to think about bringing together multiple perspectives and having a point. In a related vein, a college professor friend of mine is trying his hand at podcasting by turning his lectures into a <a href="http://kaufmak.wordpress.com/tag/podcasts/">History of the United States podcast</a> that starts not with Henry VIII and the Puritans (like my 8th grade class did), but with prehistory, archeology, and anthropology.
<li><a href="http://www.animenewsnetwork.com/anncast/">ANNCast</a> gets high marks for longevity, having been podcasting regularly since 2009. Their preferred format is an interview with one or more professionals in the anime industry, and they noted in a recent show that they&#8217;ve unwittingly been creating an oral history of anime in America, getting recollections from some of the people who brought the form to the US (and some of whom, like <i>Robotech</i> producer Carl Macek, have since passed on). Saul Mora&#8217;s interview-driven <a href="http://nsbrief.com">NSBrief</a> may be doing the same thing for Cocoa development, and deserves our admiration for that.</li>
<li><a href="http://reisengoestoschoolbybus.blogspot.com">Reisen Goes To School By Bus / Eroge Podcast</a> is an example of a fan-made, low-tech podcast with high aspirations and unique content. Host Greg (<a href="https://twitter.com/thedigitalbug">@thedigitalbug</a>), has a deep knowledge of Japanese visual novels and eroge (&#8220;erotic games&#8221;… think &#8220;Choose Your Own Adventure&#8221; with porn and tragedy). He splits his show into distinct segments — last month&#8217;s news, a game review, upcoming releases — broken up by music he probably doesn&#8217;t have the rights to but that&#8217;s awesome nonetheless. He&#8217;s got a bit of an accent but is a very conversational and idiomatic speaker, well-versed in the in-jokes and jargon that his audience appreciates. This show is the very epitome of &#8220;there&#8217;s nothing else like it.&#8221;</li>
<li>Who says podcasts can only be non-fiction? Anime reviewer <a href="http://jesuotaku.com/">JesuOtaku</a> has been producing the <a href="http://furubadrama.weebly.com/">Fruits Basket Audio Drama</a>, in which she&#8217;s adapting the manga <i>Fruits Basket</i> as an old-style radio show, complete with original music, sound effects, foley, and an extensive voice cast, all amateurs or semi-pros. The quality is truly outstanding. While it&#8217;s technically not a podcast — owing to her experience as a reviewer for <a href="http://tgwtg.com">That Guy With The Glasses</a>, she initially posts new episodes as a video &lt;embed&gt; — she also posts regular MP3s that I&#8217;ve manually assembled into an unofficial-but-OKed-by-JO <a href="http://dl.dropbox.com/u/12216224/furuba/furubacast-jun-2012.xml">podcast feed XML</a> of the show. (Full disclosure: I appear three times in the show as an extra, most recently as the bus driver that takes Tohru to Momiji&#8217;s vacation home)</li>
</ul>
<p>Extra bonus disclosure: I used to have a podcast of my own. <i>The Annotated Alchemist</i> ran from 2005-2008. I pod-faded because 2008 got busier than I could handle (switching career to iPhone development, co-writing a book about it, dealing with a child&#8217;s ASD diagnosis, moving to Michigan). The show was an episode-by-episode critical analysis of the anime series <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Ftv-season%252Ffullmetal-alchemist-season-1%252Fid319841125%253Fuo%253D4%2526partnerId%253D30"><i>Fullmetal Alchemist</i></a>, based on the idea that there were too many anime podcasts consisting of &#8220;a bunch of kids talking crap into a laptop mic in the basement&#8221; and that I wanted to go way deep on one topic that I was really focused on. I split the show into specific segments: a summary of the episode, a discussion of the themes and craft of the show, listener feedback (I had a SkypeIn number that listeners could call with comments and questions… this gave me a variety of vocal tones that as a one-man show I couldn&#8217;t otherwise achieve), and a closing list of upcoming conventions with appearances by the show&#8217;s voice actors. The show&#8217;s site is gone but I still have the old episodes… they&#8217;re not great, but I could put them up on my Dropbox now, I suppose? Anyways, I had a specific goal in mind, and while it was a significant workload (2-3 hours to write each episode, 2 to record, 2-3 in post to mix in audio from the show or listener calls where I tossed to them), I was more or less able to realize my initial vision in some ways (the quality of the episodes themselves) if not others (keeping up with the weekly [adult swim] broadcast, finishing all 51 episodes).</p>
<p>But maybe there&#8217;s a simple rule at work when it comes to podcasts: <em>anything worth doing is worth doing right</em>. Hopefully, the quality of Cocoa podcasts will soon catch up with their quantity.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/4M5nrQHgAi0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/03/26/podblathering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CocoaConf DC 2013: The Usual Follow-Up Links</title>
		<link>http://www.subfurther.com/blog/2013/03/25/cocoaconf-dc-2013-the-usual-follow-up-links/</link>
		<comments>http://www.subfurther.com/blog/2013/03/25/cocoaconf-dc-2013-the-usual-follow-up-links/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 23:09:12 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[coreaudio]]></category>
		<category><![CDATA[httplivestreaming]]></category>
		<category><![CDATA[roku]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2838</guid>
		<description><![CDATA[For CocoaConf DC, I freshened up the HTTP Live Streaming talk with a demo of the streams created for the iOS app working as-is with a Roku HD purchased the night before at Target (because I forgot my Roku XS back in Grand Rapids). Actually, only the basic and variant streams work &#8211; I didn&#8217;t [...]]]></description>
				<content:encoded><![CDATA[<p>For <a href="http://cocoaconf.com/dc-2013/home">CocoaConf DC</a>, I freshened up the HTTP Live Streaming talk with a <a href="http://www.subfurther.com/blog/2013/03/18/rok-rok-rok-rok-roku-roll-high-school/">demo</a> of the streams created for the iOS app working as-is with a <a href="http://www.amazon.com/gp/product/B007KEZMX4/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B007KEZMX4&#038;linkCode=as2&#038;tag=tico07-20">Roku HD</a> purchased the night before at Target (because I forgot my <a href="http://www.amazon.com/gp/product/B005CLPP84/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B005CLPP84&#038;linkCode=as2&#038;tag=tico07-20">Roku XS</a> back in Grand Rapids). Actually, only the basic and variant streams work &#8211; I didn&#8217;t try getting encrypted streams to work, but <a href="http://sdkdocs.roku.com/display/RokuSDKv48/Encoding+Guide#EncodingGuide-41Encryption">Roku apparently supports it</a>, so that&#8217;s something to work on for next time.</p>
<ul>
<li><strong>All-Day iPad Productivity APIs Workshop</strong> &#8211; <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfchicago13/CocoaConfiPadProductivityClass.zip">code</a></li>
<li><strong>Core Audio in iOS 6</strong> &#8211; <a href="http://www.slideshare.net/invalidname/core-audio-in-ios-6-cocoaconf-dc-march-2013">slides</a>, <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfchicago13/AQTapDemos-fixed-Feb-12-2013.zip">code</a></li>
<li><strong>Mobile Movies with HTTP Live Streaming</strong> &#8211; <a href="http://www.slideshare.net/invalidname/mobile-movies-with-http-live-streaming-cocoaconf-chicago-march-2013">slides</a>, <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfportland12/HTTPLiveStreamingDemo.zip">iOS code</a>, <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfdc13/cocoaconf-hls.zip">Roku code</a></li>
</ul>
<p>For <a href="http://cocoaconf.com/sanjose-2013/home">CocoaConf San Jose</a> on April 18, I&#8217;m bringing back the <a href="http://cocoaconf.com/sanjose-2013/session/core-audio-workshop">All-Day Core Audio Workshop</a> for one more go-round, so get in on that if you&#8217;re interested.</p>
<p>I also had time left over at the end of my regular Core Audio session in DC… with a few judicious cuts, I could carve out 10 minutes or so for an introduction to <a href="http://audiob.us">AudioBus</a>. Anyone interested in that?</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/sL4vtJrHwnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/03/25/cocoaconf-dc-2013-the-usual-follow-up-links/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rok, Rok, Rok, Rok, Roku Roll High School</title>
		<link>http://www.subfurther.com/blog/2013/03/18/rok-rok-rok-rok-roku-roll-high-school/</link>
		<comments>http://www.subfurther.com/blog/2013/03/18/rok-rok-rok-rok-roku-roll-high-school/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 02:02:22 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[appletv]]></category>
		<category><![CDATA[httplivestreaming]]></category>
		<category><![CDATA[roku]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2802</guid>
		<description><![CDATA[I mentioned a while back that I was bored now with Apple apparently deciding to take the first few months of 2013 off, at least in terms of shipping anything interesting. With all the laptops on a schedule of updating mid-year for back-to-school, and all the iOS devices apparently on a holiday season update, and [...]]]></description>
				<content:encoded><![CDATA[<p>I mentioned a while back that I was <a href="http://www.subfurther.com/blog/2013/01/31/bored-now/">bored now</a> with Apple apparently deciding to take the first few months of 2013 off, at least in terms of shipping anything interesting. With all the laptops on a schedule of updating mid-year for back-to-school, and all the iOS devices apparently on a holiday season update, and the SDKs getting revved annually at WWDC, it leaves a big gaping hole of nothing at the beginning of the year.</p>
<p>I&#8217;d hoped we&#8217;d see an Apple TV SDK by now, and since we haven&#8217;t, I&#8217;ve gone looking for something else to do. I bought a <a href="http://www.amazon.com/gp/product/B005CLPP84/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B005CLPP84&#038;linkCode=as2&#038;tag=tico07-20">Roku 2 XS Player</a> (just in time for the <a href="http://www.amazon.com/gp/product/B00BGGDVOO/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B00BGGDVOO&#038;linkCode=as2&#038;tag=tico07-20">Roku 3</a> to come out, wouldn&#8217;t you know), since the Roku platform is highly welcoming of <a href="http://www.roku.com/developer">third-party developers</a>, and features a <a href="http://www.roku.com/channels">broad selection of third-party content</a> (including, of course, another means of getting my <a href="http://www.roku.com/channels/#!details/2595/crunchyroll">Crunchyroll</a> fix).</p>
<p><span id="more-2802"></span></p>
<p><i>Aside: Notwithstanding the Amazon affiliate links in the above graf, I assumed I&#8217;d need to mail order the Roku from the company itself. A week after it arrived, I was picking up an iPod touch for my Mom at a <a href="http://meijer.com">Meijer</a>, and saw multiple Roku models on the shelf. And this was at a fairly remote store (Cadillac, MI). To my surprise, it may be easier to find Roku than Apple TV at retail.</i></p>
<p><br/><br />
<h3>Think Different</h3>
<p>The Roku is interesting in that they&#8217;ve clearly set out their own value system and aesthetic, going their own way rather than just copying Apple (like a <a href="http://samsungcopiesapple.tumblr.com">certain slavish imitator we all know</a> in the phone and tablet business). After using both the Apple TV and the Roku for a while, I like a lot of Roku&#8217;s choices better. Maybe nothing sums it up better than the remotes:</p>
<p><a href="http://www.subfurther.com/blog/wp-content/uploads/2013/03/remotes-dammit.jpg"><img src="http://www.subfurther.com/blog/wp-content/uploads/2013/03/remotes-dammit-300x225.jpg" alt="Size comparison of Roku and Apple TV remotes" width="300" height="225" class="alignnone size-medium wp-image-2806" /></a></p>
<p>Yes, I forced the perspective here a little bit, but a straight on shot doesn&#8217;t do justice to the fact that the Roku remote is <strong>much</strong> larger than the Apple TV remote. This is a <strong>good thing</strong>. The Roku uses RF, which doesn&#8217;t require line-of-sight, and therefore lets the Roku be placed completely out of sight, even attached to the back of the TV. It&#8217;s about the size of a Wiimote, and the sideways orientation of the A and B buttons are clearly meant for potential service as a game controller. It has a built-in accelerometer (hence the Wii-like wrist strap) which also serves to wake up the controller when you pick it up. The Roku 3 adds a clever feature that lets you plug headphones directly into its remote for private listening. The Apple TV remote, on the other hand, requires a line of sight, is clearly unfit for most gaming (claims of Apple&#8217;s <a href="http://www.macrumors.com/2013/02/13/xbox-founding-engineer-says-apple-tv-could-destroy-console-gaming-with-third-party-apps/">presumptive dominance of console gaming</a> notwithstanding</a>), and with Apple&#8217;s pronounced fetish for miniaturizing things that don&#8217;t need to be miniaturized, the one thing it does best is get lost in seat cushions.</p>
<p>There are two philosophies at work here: one is trying to build a great product, the other is indulging a &#8220;hobby&#8221;. Face it: without AirPlay, the Apple TV would be a little black plastic turd.</p>
<p><br/><br />
<h3>I Can Haz SDK?</h3>
<p>The reason I&#8217;m interested in Roku is for my streaming work — more on that another time — so it was easy to figure out what I wanted to do for an initial project: bring up some of my streams on the TV.</p>
<p>To do this, I downloaded the SDK. This turns out to be a skippable step: there is no SDK, <i>per se</i>, at least in the sense of a toolchain and libraries that you have to have on your development machine.</p>
<p>To develop a Roku app (er, I mean, a Roku &#8220;channel&#8221;), you assemble resources (scripting code, images, metadata) in a specific folder structure, zip it up, then upload it to the Roku box via a web interface, which compiles and installs the channel. To debug running code or to see your compile errors, you just <code>telnet</code> to the Roku on a specific port. While there is an Eclipse plugin and a Makefile, they&#8217;re both conveniences. There is also a <code>biftool</code> command-line executable that I haven&#8217;t needed, and it&#8217;s a good thing too, because it depends on the Boost library that is supposedly provided by <a href="http://www.macports.org">MacPorts</a>, but like most dependencies on these open-source dependency manager systems, it doesn&#8217;t actually work out of the box for a lot of people, myself included. For now, not a problem.</p>
<p>The SDK download does provide a bunch of sample code, but not documentation. The documentation is in a wiki on Roku&#8217;s developer site, which is somewhat unfortunate in that it can&#8217;t be easily browsed offline, isn&#8217;t easily searched, and isn&#8217;t integrated with syntax-highlighting text editors and documentation viewers. There&#8217;s probably a nice opportunity here for someone who wants to write the first good Roku SDK book… which is not me, because I want to focus on streaming instead of writing for a while (which is why I&#8217;m on this adventure in the first place).</p>
<p>The <a href="http://sdkdocs.roku.com/display/RokuSDKv48/Component+Reference">UI components</a> make sense for what a Roku is, and again, they&#8217;ve clearly gone a different way from Apple. The various &#8220;list styles&#8221; of the <a href="http://sdkdocs.roku.com/display/RokuSDKv48/ifPosterScreen"><code>ifPosterScreen</code></a> offer practical ways of navigating with a right-and-left action through series or episodes by billboard image, putting the current selection front and center and making it much more obvious than the thin highlight rectangle of an Apple TV. The use of top-of-screen menus and breadcrumbs are also unique and practical.</p>
<p><a href="https://twitter.com/invalidname/status/313378422015541248/photo/1"><img src="https://pbs.twimg.com/media/BFlYA7TCQAAb2mV.png:large" width="254" height="192" alt="Title card for CocoaConf demo channel on Roku" class="alignnone" /></a></p>
<p><br/><br />
<h3>The CocoaConf Demo Channel</h3>
<p>I&#8217;ve been doing a <a href="http://cocoaconf.com/conference/sessionDetails/84?confId=9">session on HTTP Live Streaming at CocoaConf</a> that I&#8217;ve gradually been adding to — and <a href="http://www.ustream.tv/recorded/27410283">livestreaming the talk itself</a> when network conditions permit — so I decided to take the HLS streams I&#8217;d created for that talk and try to get them working on the Roku.</p>
<p>This, after all, is one of the biggest advantages of the Roku: its preferred formats are the usual flavors of H.264 video with AAC or AC3 audio, and it uses HTTP Live Streaming for streaming video, either live or video-on-demand. It&#8217;s no surprise that so many content providers with iOS apps are also on Roku, because most of the heavy lifting is in the encoder room, and the client-side work needed to get those apps working on the Roku is insubstantial.</p>
<p>How easy is it? I can&#8217;t say I&#8217;m exactly delighted to be working in a language that bills itself as being closely modeled on Visual Basic (that would be Roku&#8217;s own &#8220;BrightScript&#8221; language), but in maybe 8 hours of arbitrary copy-and-pasting from the sample code, I got my app working.</p>
<p><a href="https://plus.google.com/116474444770234835959/posts/B1ADLejnw6b"><img src="http://www.subfurther.com/blog/wp-content/uploads/2013/03/roku-cocoaconf.m4v-300x224.jpg" alt="CocoaConf Roku app" width="300" height="224" class="alignnone size-medium wp-image-2820" /></a></p>
<p>I captured a video of the app and posted it over on <a href="https://plus.google.com/116474444770234835959/posts/B1ADLejnw6b">teh Plus</a> (Google&#8217;s got money; they can afford to host my video). What should strike you as surprising is that this channel is about 150 lines of copy-and-paste code:</p>
<p><a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfdc13/cocoaconf-hls/source/main.brs" alt="cocoaconf Roku demo code (BrightScript .brs)">main.brs</a> <i>(sorry, used to have an iframe for the code here, but it didn&#8217;t scroll on Mobile Safari)</i></p>
<p>On the one hand, I&#8217;ve been doing curly-brace C-derived languages (or just plain C itself) for 15 years, so trying to revert to the style of these scripting languages is not easy. But then again, the whipitupitude of this stuff is not to be overlooked: I would have been hard pressed to have gotten as much done in my first 8 hours with the iPhone SDK, and it too had decent sample code and documentation to crib from.</p>
<p>Moreover, the whole point of these devices is to deliver content, so the actual functionality of a given app should mostly be to find video and then get out of the way when it starts streaming. There are non-full-screen APIs for video, so in theory you could get fancy and squeeze back your video and surround it with something else (e.g., a related Twitter feed, updating in real time), but still, I don&#8217;t know if anyone should be planning on porting Office or emacs over to the Roku. And if the apps are simple, then maybe the rigor of the more formal programming languages won&#8217;t do as much for you?</p>
<p>Still, if Roku ever does offer a C API, I&#8217;m in.</p>
<p>Anyways, the point of all this was to show that the Roku offers a great way to take the HLS content that many providers are already developing for iOS clients, and to put it on the big screen with an approachable SDK, on an inexpensive box that&#8217;s backed up by a company that actually wants to have a wide catalog of third-party content.</p>
<p>I can totally get on board with that.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/7xxeXTpiSOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/03/18/rok-rok-rok-rok-roku-roll-high-school/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CocoaConf Chicago 2013: The Usual Follow-Up Links</title>
		<link>http://www.subfurther.com/blog/2013/03/14/cocoaconf-chicago-2013-the-usual-follow-up-links/</link>
		<comments>http://www.subfurther.com/blog/2013/03/14/cocoaconf-chicago-2013-the-usual-follow-up-links/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 15:06:10 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[coreaudio]]></category>
		<category><![CDATA[httplivestreaming]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2795</guid>
		<description><![CDATA[OK, let&#8217;s do this thing. Attendees of the iPad Productivity Workshop — an all-day class I did for the first time, following a poll here on [Tc]; about new tutorial topics — have already written all the code, but for DC students who want an advanced peek (or anyone else who&#8217;s interested), here&#8217;s a]]></description>
				<content:encoded><![CDATA[<p>OK, let&#8217;s do this thing.</p>
<p>Attendees of the <a href="http://cocoaconf.com/conference/sessionDetails/241?confId=8">iPad Productivity Workshop</a> — an all-day class I did for the first time, following a <a href="http://www.subfurther.com/blog/2012/12/19/2013-cocoaconf-tutorial-survey/">poll here on [Tc];</a> about new tutorial topics — have already written all the code, but for DC students who want an advanced peek (or anyone else who&#8217;s interested), here&#8217;s a <a href="http://is.gd/cocoaconfipadproductivity"</a>zip of the project in its various stages</a>.</p>
<p>The &#8220;staged examples&#8221; is an idea I got from <a href="http://www.dimsumthinking.com">Daniel Steinberg</a>, who swears by it for his classes. The great thing about it is that if someone falls behind, they don&#8217;t get lost: they can just skip ahead to the next checkpoint in the code&#8217;s progression. In this class, we build an app that can search iTunes, put results in an <code>UICollectionView</code>, and then allows the user to build their wishlist of items as a <code>UIDocument</code>. Along the way, we add in:</p>
<ol>
<li>Copying an item to the clipboard, to paste into other apps</li>
<li>Document persistence, with iOS background saving</li>
<li>Add to / delete from list</li>
<li>Undo of add/delete</li>
<li>Save document to iCloud</li>
<li>Import documents from other apps (e.g., receive a wishlist as an e-mail attachment or Safari download)</li>
<li>Export wishlist to PDF and send it to mail, printer, other PDF apps</li>
</ol>
<p>It turns out to be more than I can teach in 8 hours, so with the stages, we just skip ahead to a good starting point. In Chicago, we started at stage 3, with the search feature working and the split-view for wishlist browsing set up in the storyboard but not yet implemented. The code might get a few tweaks before DC — possibly sorting the <code>.wishlist</code> files in the master table, and supporting pasting into the wishlist — but overall things are in really good shape.</p>
<p>As for my other talks, I did <a href="http://cocoaconf.com/conference/sessionDetails/175?confId=8">Core Audio in iOS 6</a> and <a href="http://cocoaconf.com/conference/sessionDetails/84?confId=8">Mobile Movies with HTTP Live Streaming</a> again. They&#8217;re good talks and pretty polished at this point, but they were in some ways meant as a placeholder in case Apple gave us something new to play with in time for CocoaConf. Obviously that hasn&#8217;t happened… it&#8217;s been a real boring Q1 in Apple-land.</p>
<ul>
<li><strong>Core Audio in iOS 6</strong> &#8211; <a href="http://www.slideshare.net/invalidname/core-audio-in-ios-6-cocoaconf-chicago-13">slides</a>, <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfchicago13/AQTapDemos-fixed-Feb-12-2013.zip">code</a></li>
<li><strong>Mobile Movies with HTTP Live Streaming</strong> &#8211; <a href="http://www.slideshare.net/invalidname/mobile-movies-with-http-live-streaming-cocoaconf-chicago-13">slides</a>, <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfportland12/HTTPLiveStreamingDemo.zip">code</a></li>
</ul>
<p>If you&#8217;re here for the Core Audio, note that this is the corrected, works-on-iOS-6.1 code that I discussed in a <a href="http://www.subfurther.com/blog/2013/02/23/correcting-core-audio/">previous blog entry</a>.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/eTR6kDhBp-E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/03/14/cocoaconf-chicago-2013-the-usual-follow-up-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Correcting Core Audio</title>
		<link>http://www.subfurther.com/blog/2013/02/23/correcting-core-audio/</link>
		<comments>http://www.subfurther.com/blog/2013/02/23/correcting-core-audio/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 16:11:06 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[coreaudio]]></category>
		<category><![CDATA[postedfromipad]]></category>
		<category><![CDATA[publishing]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2779</guid>
		<description><![CDATA[A client unexpectedly hitting pause on a major project has me less employed than I&#8217;d like right now &#8212; yes, I&#8217;m available, ping me &#8212; so I&#8217;ve spent some time in the past few weeks cleaning up some corrections on Core Audio stuff here and there. I went through the e-mailed errata I&#8217;ve received for [...]]]></description>
				<content:encoded><![CDATA[<p>A client unexpectedly hitting pause on a major project has me less employed than I&#8217;d like right now &#8212; yes, I&#8217;m available, ping me &#8212; so I&#8217;ve spent some time in the past few weeks cleaning up some corrections on Core Audio stuff here and there.</p>
<p>I went through the e-mailed errata I&#8217;ve received for <a href="http://www.amazon.com/Learning-Core-Audio-Hands-On-Programming/dp/0321636848/ref=as_li_ss_mfw?&#038;linkCode=wey&#038;tag=tico07-20"><i>Learning Core Audio</i></a> and sent off an update to Pearson, although it&#8217;s not yet up on <a href="http://www.informit.com/store/product.aspx?isbn=0321636848">the book&#8217;s home page.</a> The biggest fix here is a typo in the chapter 8 audio pass-through for Mac, which sometimes causes bad distortion depending on your selected input device. The bug was caused by mis-counted timestamps and apparently a race condition of which audio unit (input or output) got called first… all owing to the fact that I had set <code>-1</code> as a flag value, and then did a comparison against <code>0</code> instead of <code>-1</code>. Anyways, if this is something that bit you, watch the book&#8217;s home page for an update, or just grab the <a href="http://dl.dropbox.com/u/12216224/coreaudiobook/learning-core-audio-xcode4-projects-jan-23-2013.zip">updated code from my Dropbox.</a> The zip has a <code>CHANGES.txt</code> with the other code fixes in this update.</p>
<p>The other thing I had to correct was my ambitious pitch-shifting web radio demo that I developed for <a href="http://www.subfurther.com/blog/2012/10/30/cocoaconf-portland-12-and-the-audioqueueprocessingtap/">my CocoaConf Portland talk</a>. The effect stopped working in iOS 6.1, and fixing it led to a long engagement with the coreaudio-api mailing list and the use of an ADC support incident on my part.</p>
<p><span id="more-2779"></span></p>
<p>This app works by using an Audio Queue to play packets provided by an Audio File Stream, based on a web radio app we develop in my <a href="http://cocoaconf.com/conference/sessionDetails/143?confId=11">one-day Core Audio Intro course.</a> It then uses iOS 6&#8242;s new <code>AudioQueueProcessingTap</code> to get a callback with decoded samples right before they&#8217;re about to be played, and applies an effect to those samples. To do this effect, I have to use an offline <code>AUGraph</code>, as explained in the <a href="http://www.subfurther.com/blog/2012/10/30/cocoaconf-portland-12-and-the-audioqueueprocessingtap/">afore-linked CocoaConf Portland blog entry.</a></p>
<p>Turns out that what we count as &#8220;an effect&#8221; isn&#8217;t cut and dry. Technically, <code>AUNewTimePitch</code> isn&#8217;t an effect at all; it has type <code>kAudioUnitType_Converter</code> (and not <code>kAudioUnitType_Effect</code>). This matters because it turns out there&#8217;s an unstated (probably undocumented) contract that effect units produce and consume the exact same number of samples, but converters don&#8217;t necessarily do so. That&#8217;s not a problem when you&#8217;re reading from a file (you can always ask for more data than you produce, at least until you hit the end of file), but it&#8217;s potentially a problem when you&#8217;re getting handed <code>AudioBufferList</code>s from the AQProcessingTap. I say &#8220;potentially&#8221;, because while this obviously wouldn&#8217;t work to do time-shifting &#8212; you can&#8217;t play audio faster than the web radio stream sends it to you &#8212; I&#8217;m only pitch-shifting.</p>
<p>On the list, Apple&#8217;s Bill Stewart <a href="http://lists.apple.com/archives/coreaudio-api/2013/Feb/msg00013.html">suggested</a> I buffer up some silence before adding the web radio samples to the buffer, so that I&#8217;d be protected if <code>AUNewTimePitch</code> ever needed more samples than had been saved off from the AQProcessingTap callback. So I did this, and it&#8217;s all well and good.</p>
<p>But it didn&#8217;t fix the problem, because my real problem was that I was forgetting to increment the time-stamps, so only my first call to <code>AudioUnitRender()</code> did anything, and the rest no-op&#8217;ed because the samples for time <code>0</code> had already been produced. That&#8217;s right, my second timestamp-related bug in a week. Oops. One of those things where you reach the end and wonder how the code ever ran correctly on 6.0 in the first place.</p>
<p>One other change in this demo is that 6.0 and 6.1 changed the so-called &#8220;topology&#8221; of the data provided by the AQProcessingTap callback. In 6.0, the data is interleaved: the <code>AudioBufferList</code> has an <code>mBufferCount</code> of <code>1</code>, meaning right and left samples are interlaved in one <code>AudioBuffer</code>. In 6.1, the callback gives you 2 buffers in the <code>AudioBufferList</code>, so I had to change the technique where the ABLs are saved off for use by the <code>AUGraph</code>; they had been in a single pointer, now they&#8217;re in an array.</p>
<p>This is all summarized in <a href="http://lists.apple.com/archives/coreaudio-api/2013/Feb/msg00055.html">a long post to coreaudio-api</a>, which also covers a related thread on the list that <code>AUNewTimePitch</code> seems to boost levels and cause distortion (got a <a href="http://openradar.appspot.com/radar?id=2684401">bug report</a> in on that, FWIW). I&#8217;ve also posted a code update for my AQTap stuff &#8212; <a href="https://dl.dropbox.com/u/12216224/conferences/cocoaconfchicago13/AQTapDemos-fixed-Feb-12-2013.zip">here&#8217;s the zip</a> &#8212; which also sets up a second AQTap demo that uses a genuine effect unit, <code>AUReverb2</code>, and therefore avoids the buffering complexities that I dealt with for the pitch-shifting demo.</p>
<p>Done cleaning up old messes. Time to create some new ones.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/ym3UGBMHYZ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/02/23/correcting-core-audio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bored Now</title>
		<link>http://www.subfurther.com/blog/2013/01/31/bored-now/</link>
		<comments>http://www.subfurther.com/blog/2013/01/31/bored-now/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 23:46:45 +0000</pubDate>
		<dc:creator>cadamson</dc:creator>
				<category><![CDATA[appletv]]></category>
		<category><![CDATA[fordsync]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[roku]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://www.subfurther.com/blog/?p=2764</guid>
		<description><![CDATA[A thought occurred to me last year when Apple moved the new iPhone model to a late-year release, along with the new iPad mini, and a rev&#8217;ed iPad: what are they going to do in the first half of 2013? Think back a bit: when the iPhone first came out, it was announced in January [...]]]></description>
				<content:encoded><![CDATA[<p>A thought occurred to me last year when Apple moved the new iPhone model to a late-year release, along with the new iPad mini, and a rev&#8217;ed iPad: what are they going to do in the first half of 2013?</p>
<p>Think back a bit: when the iPhone first came out, it was announced in January and went on sale in like July (months are approximate… I&#8217;m trying to avoid using seasons for fear of Northern Hemisphere bias. You&#8217;re welcome, Australia.) For a few years, iPhone was a mid-year product, with a corresponding iPod touch coming out later in the year. Then the iPad came out in early 2010 and was updated again in early 2011 and early 2012. But now, all of these products got late-2012 updates. So… what does that leave for the next six months?</p>
<p>Macs? The iMac got updated in late-2012 too, and the laptops have moved to a mid-year schedule (with an announcement at WWDC), better suited to back-to-school buying. Even if we do get the <i>Mythical Modern Mac Pro</i> in the next few months &#8212; and I am by no means optimistic about that &#8212; it&#8217;s a niche product.</p>
<p>And as developers, everything interesting is now a once-a-year update to iOS at WWDC. OS X is supposedly moving to an annual schedule, so that should be getting previewed soon (with an eye to mid-year release), but the simple fact is that very few of us can get Mac programming gigs, so it&#8217;s not worth the time of tracking an OS X beta and its new APIs very closely.</p>
<p>If Cocoa development is indeed a cargo cult &#8212; and it&#8217;s a pretty comfortable cult to be in if so &#8212; then the planes aren&#8217;t coming back with new stuff until July. Literally the only thing I can imagine happening before then is an Apple TV SDK, and there are few signs of that happening soon, or ever.</p>
<p><span id="more-2764"></span></p>
<p>All this caught me a few months ago when I was setting up my schedule for the various <a href="http://cocoaconf.com">CocoaConfs</a> in March and April, and while I usually like to do new talks to keep things fresh and interesting, both for myself and attendees, there didn&#8217;t seem to be anything really worth doing a new talk about. iOS 6 didn&#8217;t change that much, and it&#8217;s been seven months since we got our first betas of that. Revolutionary changes like storyboards and GCD are years in the past (although you should all buy <a href="http://dimsumthinking.com">Daniel Steinberg&#8217;s</a> book on Storyboards when it hits the iBookstore on Saturday). In the end, I had CocoaConf use my most recent talks as placeholders, and now I think there&#8217;s little chance I&#8217;ll swap in anything else new.</p>
<p>My restlessness &#8212; plus a consulting lull due to a client freeze (yep, I&#8217;m available for like the first time in two years) &#8212; has me looking at new stuff to get into, beyond the Apple ecosystem (though not <i>too</i> far). Of course, there&#8217;s livestreaming, which I&#8217;ve talked about enough to have its own <a href="http://www.subfurther.com/blog/category/streaming/">category</a> on this blog, and won&#8217;t belabor further until I can get more of my research and pre-production work done.</p>
<p>On the Apple TV SDK issue, I&#8217;ve capitulated and bought a <a href="http://www.roku.com">Roku</a>, which is hooked up to my HDMI-deprived downstairs TV. I&#8217;ve also joined <a href="http://www.roku.com/developer">Roku&#8217;s developer program</a>, with an eye to trying out their SDK and seeing what it takes to develop streaming apps for the platform. Since HTTP Live Streaming is <a href="http://sdkdocs.roku.com/display/RokuSDKv48/Encoding+Guide#EncodingGuide-40HLSHTTPLiveStreaming">Roku&#8217;s recommended way of streaming content</a>, I should be able to repurpose the HLS work I&#8217;ve done on iOS. And in the Big Dream, my livestreaming plans combine with custom apps for iOS and Roku and… well, let&#8217;s not get ahead of ourselves.</p>
<p><img src="http://www.roku.com/Libraries/developer_page/dev3.sflb.ashx" width="200" height="200" alt="Roku developer FAQ logo"/></p>
<p>You can get a feel from downloading new channels on Roku what an Apple TV app store might feel like. The system has been designed to allow for consistent navigation with the remote &#8212; many apps use a top &#8220;strip&#8221; of categories that can then be entered by doing an arrow down. Within content areas, boxes represent either content, collections, or even actions&#8230; it all depends on whether you have a few things to show (TWiT), a lot (Crunchyroll), or seemingly infinite (Netflix).</p>
<p>But it also shows what&#8217;s likely holding up an Apple TV SDK: a lack of killer content. Beyond the ubiquitous Netflix and Hulu, what distinguishes Roku is niche content: K-dramas, religious shows, workout videos, and so on. Apple would never launch a third-party API if that&#8217;s all they could get; remember, back in the day, they used the iTunes Music Store and crappy pop music to flog the iPod, not idiosyncratic little podcasts.</p>
<p>It&#8217;s great that you can stream all the video apps from iOS to an Apple TV with AirPlay, but given that&#8217;s the only thing that distinguishes it from a Roku, does that basically make the Apple TV just an expensive HDMI-out cable (and not even as good, as AirPlay is highly dependent on your wifi performance)?</p>
<p>Even though both platforms have apps/channels for three of the big four US Sports (MLB, NBA, NHL), neither can show locally blacked-out games, which takes away much of the point of subscribing to such a service for a lot of people: you can&#8217;t watch the home team on it, so it&#8217;s only useful if you&#8217;re broadly interested in the sport, or if you&#8217;re a devoted fan of an out-of-town team. I kind of wonder if Apple sees breaking the blackout as one of its own requirements for seeing Apple TV as more than a hobby, and to do that, they&#8217;d basically have to revolutionize the industry (or wait for someone else to do it for them… Google maybe?)</p>
<p>As for the Roku SDK itself, I took a couple hours to get set up, and it looks like tough sledding. The development options are a command-line <code>biftool</code> utility that doesn&#8217;t work on Mac (thanks to libraries it expects but doesn&#8217;t find in <a href="http://www.macports.org">MacPorts</a>), or an Eclipse plug-in. Apps are written in a scripting language called BrightScript, which is advertised as resembling Visual Basic (groan), and all the documentation and sample code is on the web, without an all-in-one download.</p>
<p>So… probably gonna be a while.</p>
<p>The other SDK I hope may pull me out of my funk is the Ford SYNC/AppLink SDK at <a href="https://developer.ford.com">developer.ford.com</a>. After a long ramp-up period &#8212; I originally <a href="http://www.subfurther.com/blog/2010/10/10/of-user-local-programming/">mentioned</a> going to a developer event promoting the Ford SDK back in October, 2010 &#8212; Ford now has actual iOS and Android SDKs for talking to the AppLink, allowing drivers&#8217; apps to use the in-car display and voice recognition systems.</p>
<p>I have long wanted to voice-enable <a href="http://click.linksynergy.com/fs-bin/stat?id=ArMbAmSAcYI&#038;offerid=146261&#038;type=3&#038;subid=0&#038;tmpid=1826&#038;RD_PARM1=https%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Froad-tip%252Fid345368399%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Road Tip</a>, since my whole design concept for the app was to make its visible interface as minimal (and thus as minimally distracting) as possible. Its small number of list views would map more or less one-to-one to the D-pad-controlled right-dash display in our Ford Edge, and it&#8217;s even more appealing to consider banishing the screen entirely and just work by voice, letting the app read off upcoming exits and their distances, or finding your favorite brand by voice command. Right now, Road Tip badly needs some updating for iOS 6 and bugfixes, and a price model more in line with user expectations in 2013, but its low sales don&#8217;t justify further work. SYNC-enabling it might give it a second lease on life. Probably in the next six months, I need to either do that, or pull it from the store altogether.</p>
<p><img src="https://developer.ford.com/wp-content/uploads/2013/01/AppLinkEmulator.png" width="223" height="139" alt="SYNC screenshot from Ford developer site"/></p>
<p>Ford&#8217;s iOS download is packaged as a <code>.a</code> binary, header files, and two sample Xcode projects. An emulator for Mac and Windows is in the works; apparently, you can also test on real hardware with a USB stick and your app, but since my car can&#8217;t support AppLink, I&#8217;m waiting for the emulator.</p>
<p>I feel like I did back in 2008, when the iPhone SDK came out and I flipped the switch from Java to iOS. I should be able to keep going in iOS for a long time, but could something else catch my eye? More likely now than it&#8217;s been for a while.</p>
<img src="http://feeds.feedburner.com/~r/timecode/~4/vpGPumXg-4o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.subfurther.com/blog/2013/01/31/bored-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.856 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-21 05:58:56 -->
