Tweet Shoutouts
NONE
Send us your shoutouts: @iohyespodcast
The Discussion
Quick revisit of Widgets and Extensions
What “Today view” widgets are you using?
Darryl - Transit, Pedometer++. I wish I could move the Tomorrow Summary above 3rd party widgets
John - Paste+
Jason - Omnifocus, Yahoo News Digest, Duolingo
Chad - e*trade
What extensions are you using?
Darryl - ¯\_(?)_/¯
Jason - Camera+ photo editing, 1Password Safari extension
Chad - 1Password, Transmit
What do you still want to see exist?
Jason - VSCO CAM photo editing, more 3rd-party 1Password integration
Chad - Better YouTube support
Metal - Low-overhead GPU access for iOS 8
What is Metal?
Modern, Thin API for GPU programming (graphics and simd compute)
Designed for A7 and newer SoCs (iPhone 5S and newer)
Shader/kernel language based on C++11
Who should/will use Metal?
In-house/roll-your-own 3D engines/frameworks
For most folks, using Metal or OpenGL directly is overkill (but fun!)
Alternative, higher-level APIs include SceneKit (3D) and SpriteKit (2D), which provide much more than just graphics rendering support, including graph management
Third-party 3D engines/frameworks
Compute-heavy applications and filters with highly parallelizable work
DSP
Image filters
Protein folding?
Note: Swift currently doesn’t support importing C unions or SIMD vector types. Chris Lattner acknowledged this, citing feature prioritization (so it’s reasonable to be hopeful it’s coming in the not-so-distant future). In the meantime, if you need to work with SIMD, you may want to stick with Objective-C when using Metal.
Practical differences between Metal and OpenGL ES
In Metal, command buffers are exposed, giving control over when the commands are sent to the GPU to the application and putting the onus of asynchronous framing on the application
Most state is stored in immutable state objects that are created at setup, not in each draw cycle, allowing for quick state change that doesn’t require expensive recompilation of shaders/validation
Streamlined API. OpenGL provides many ways to do (effectively) the same task largely due to its evolution. Metal sheds many of the legacy techniques.
Metal provides direct access to the A7’s shared memory. Thread safety/synchronization is the responsibility of the app.
Additional resources
AnandTech : Some Thoughts on Apple’s Metal API
Rendering Pipeline: What’s the Big Deal with Apple’s Metal API?
Unity Blog: Metal, A New Graphics API for iOS 8
Obligatory Ray Wenderlich link: iOS 8 Metal Tutorial with Swift
Metal By Example
Open-Source Project of the Week
ScrimpyCat's Metal Examples
There are surprisingly few open source projects using Metal so far, but here’s a repo with some sample code illustrating the use of basic Metal APIs and shaders.
git clone https://github.com/ScrimpyCat/Metal-Examples.git
Picks
John Follow @johnsextro
Razer Tartarus a game controller repurposed (note: I’m actually using an older version called the Nostromo N52)
Darryl Follow @dh_thomas
Mike Ash: Swift and C
Swift provides rich facilities for OO and functional programming, but it also allows extensive bridging to C APIs. Learn all about how to call C functions, work with "unsafe" pointers, manage memory, and more.
Chad Follow @jazzychad
AWS iOS SDK
AWS Mobile Analytics
“100 million free events per month”
“$1.00 per million events per month”
Jason Follow @jak
UX Companion iOS app
A glossary of user experience terms, with links on how to apply and learn more about each topic. Basically, a phrase book for speaking to designers that you work with.
Alternative show title suggestions
You are ruining his segue
The patron saint of brown-nosers
Sudo OCD
Drunk Darryl
Are you learning English?
Emoticon for shrugging shoulders
Too old a man
Long story short
Boy have they
Sure
Are you using the knob at all?
That’s a lot of letters