Late 2017 Speaking Update

[Notice how I said “Late 2017” and not “Fall 2017”? You’re welcome, southern hemisphere.]

So I just have one speaking spot lined up for the rest of the year, at least as far as developer talks go(*). I’ll be at the all-new Swift by Northwest, the new conference by the CocoaConf folks, in Seattle in late October.

(* – as for anime talks, I’m wait-listed for Crunchyroll Expo in Santa Clara in August, and need to send in a proposal for Youmacon in Detroit in November)

Swift by Northwest is a single-track conference, which in the past has given me some reason for concern, as I prefer to do these fringey media API talks that people can skip by going to another session and not, you know, useful-to-everyone talks like “how to not hate auto layout” or “why you should use Instruments more than twice a year” (those topics are more for my next book, but we can get into that in 2018). CocoaConf Boston 2015 was a single-track conference, and my only talk with new stuff was this media APIs on WatchKit talk that was really obscure and under-researched and one of the worst talks I’ve ever done (although it did anticipate how Overcast would make Apple Watch playback work, so that’s something).

Fortunately, I’m coming into Swift by Northwest with stronger material. Back at Forward Swift in March, I started doing this talk about how the media APIs show some of the limits of Swift: calling C-interface APIs from Swift is pretty gross, AUAudioHost implementations have to be in Obj-C, and render kernels must be in C or C++, not Swift or Obj-C.

Forward recently posted their videos from this year’s event, and I’m grateful for the work they put in, particularly with mine (I presented from an iPad instead of a Mac, so it didn’t get screen-recorded on-site, and I had to go back and re-perform the slides and demos at home, which they then edited in. All things considered, they did a great job sync’ing everything up).

(This being a fun talk, I wanted to dress more casual than my usual collared shirt and cargos, though looking at this video, I wish I’d chosen a more forgiving t-shirt and jeans. Or, y’know, lose 20 pounds.)

Anyways, I further improved this talk for when I gave it at the CocoaConfs in Chicago and WWDC week (“CocoaConf Next Door”) by getting a full-blown v3 audio unit working (details here), which lets me demo it as an App Extension being run inside GarageBand. So now I think it’s one of the best talks I’ve done. And better yet, despite involving media APIs, it’s really about Swift: where it runs into trouble, what it can’t do, how it needs to evolve over the next few years if it seriously intends to be a “systems programming language” (as it claims) that could potentially be used instead of C or C++ for low-level stuff.

[Swift’s] combination of safety and speed make Swift an excellent choice for everything from “Hello, world!” to an entire operating system.
-from The Swift Programming Language (Swift 4)

I don’t know about you, but that seems like pretty wishful thinking right now. Let’s talk again after the Rust-y memory ownership model gets worked out.

Anyways, I’m pretty psyched to see how the new conference works out. It looks like their plan is to roost in one location and grow steadily and organically, maybe like how 360iDev stopped touring and just occurs once a year in Denver. Seattle should be a good location, and this time it’s in the Radisson, rather than the peculiar arrangement they had for some CocoaConf Seattles, where the conference was in the SEA-TAC airport itself.

Comment (1)

  1. Chris Adamson

    Didn’t have a good way to work this into the body of the post, but obviously I’ll be doing a once-over of the talk to update it for iOS 11. One of the APIs I use in the beginning (AVCaptureDevice.devices) is deprecated, so I need to remove that at a minimum. And I’m going to see if AV Foundation’s AVAudioFile would allow me to avoid the Audio Toolbox stuff (AudioFile and ExtAudioFile), since AV Foundation is generally just fine to call from Swift.

Leave a Reply

Your email address will not be published. Required fields are marked *