Under The BridgeUnder The Bridge

Musings
DIY Coronavirus Tracking

Everybody enjoying their shelter in place, we trust? Yes, it’s interesting times indeed, especially here at Trollwerks Manor in downtown Bangkok where we’ve been working the last while for a big OTA — a particularly challenged industry, that is! And of course we’d like to do something mashing up travel and coronavirus stats … but, as you’ve no doubt heard, Apple isn’t letting any indie apps tracking coronavirus be published.

However, if you’d like to roll your own, several people have stepped up and published their efforts on Github:

Covidcheck:

Covidcheck is an app that allows people to track COVID-19 cases in an easy-to-use interface to increase awareness and preparation. Unfortunately, Apple has rejected Covidcheck as the App Store Review Guidelines require that medical apps are published by medical institutions, so I’ve open sourced Covidcheck under a very free license with the intent that people can use it for any purpose…

CoronaVirusTrackerSwiftUI:

  • Current statistics of global total confirmed, deaths, recovered cases.
  • Statistics of countries and regions total cases count
  • World map with annotation pin and description of affected regions
  • Datasets is provided by ArcGIS Esri Corona Virus dataset.
  • Basic advice to prevent and handle virus, myth busters Q&A from WHO.

CoronaTracker:

  • Live data: Shows the most recent data, and updates automatically.
  • Distribution map with two levels of details:
  • Countries: When the user zooms out. Fewer details and reduced clutter.
  • Cities: When the user zooms in. More details.
  • Charts:Current state chart for all countries (and cities).
  • Timeline chart for all countries (and cities).
  • Top affected countries chart with info about every country.
  • Option for using a logarithmic scale.
  • Search for countries & cities.
  • Share stats & charts as images.
  • Today widget for worldwide stats (Contributed by Piotr Ożóg).
  • Red color scale: Reflects the number of confirmed cases. In addition to increasing circle size.
  • Statistics: Including the number of confirmed, recovered, and deaths, in addition to percents.
  • iPad & macOS support.

Even if you’re not looking for a Corona-chan live feed of your own, check these out for some nice design ideas for presenting geographical information!

And if you do have the skills and time to actually do something useful, check out this list of 

awesome-coronavirus

Open source projects, datasets, apps, hackathons, and even hardware — contribute if you can, pass along if you can’t, and above all, stay safe, Dear Readers!

AR Reality Check: RealityKit

So it’s been a while since ARKit came out, and the App Store was briefly flooded with novelty apps, and we went off giving speeches on it and all, and that was all very exciting wasn’t it? Until the excitement of watching floating sharks and all died down, and interest is at a pretty low level these days. Incorrectly, we think, you should be keeping an eye on it, as Apple’s ongoing investment in is just too big to be purely a side hobby — as was perceptively noted here by Mr. Dent Reality:

Apple Restarted Their AR Platform Strategy, and Nobody Noticed

It’s a significant move for Apple to leave behind a two-year old platform, and replace it with something completely new. They’ve obviously made that decision with a long-term view — SceneKit had some downsides, and they thought a new framework would give them a better foundation for the future.

With that in mind, it’s interesting to think about what RealityKit brings — an AR-only framework, with high-performance, and a modern Swift-only API that regular developers can use. I don’t like to speculate too much, but I’d imagine that this is Apple’s path towards wearable AR. And features that we’re seeing emphasised today, such as anchored content, shared experiences and Quick Look — all now supported through RealityKit — could be a primary part of a future wearable product…

Well, he’s certainly doing his part … and much more than his part, check out

How to Build Really Compelling AR Experiences

Complete with open source MuseumAR – “A museum AR experience and simulator.”

(Museum apps are a commonly mooted use case — also check out Building a Museum App with ARKit 2!)

The most comprehensive overview of the new stuff we’ve seen is this series, annotating the RealityKit-CardFlip example game:

Also rather interesting is the effort Apple’s going to to make this technology user accessible. Remember last year,

How USDZ Enables New Experiences for ARKit

Creating an Animoji-Style 3D Character to Use With TrueDepth

All very interesting, but a lot of work … until now:

Introducing Reality Converter

The new Reality Converter app makes it easy to convert, view, and customize USDZ 3D objects on Mac. Simply drag-and-drop common 3D file formats, such as .obj, .gltf and .usd, to view the converted USDZ result, customize material properties with your own textures, and edit file metadata…

Which makes it even easier to create experiences like discussed here:

How to make an augmented reality decorating experience app with AR Quick Look

Here’s some more interesting articles on using CoreML and Vision to make your AR apps cleverer:

Enhancing ARKit Image Detection with CoreML

Face Detection and Recognition With CoreML and ARKit

How to Detect and Track the User’s Face Using ARKit

And although it could use some up to dating, check out Awesome-ARKit as well!

OSS Internships: Summer Of Code 2020

All you student developers enrolled at some kind of institution of higher education, it’s That Time Of Year Again to start planning for what you’re doing this summer — specifically, if you take our advice for how to start building a career, you’d be well advised indeed to apply next month for the opportunities here:

Google Summer of Code 2020 mentoring orgs announced!

We are delighted to announce the open source projects and organizations that have been accepted for Google Summer of Code (GSoC) 2020, the 16th year of the program!

After careful review, we have chosen 200 open source projects to be mentor organizations this year, 30 of which are new to the program. Please see the program website for a complete list of the accepted organizations.

Are you a student interested in participating in GSoC this year? We will begin accepting student applications on Monday, March 16, 2020 at 18:00 UTC…

The full list of organizations is here:

ORGANIZATIONS; Find an organization to submit a proposal to

Naturally, we recommend that your first stop should be of course swift.org:

Swift to participate in GSoC 2020!

The official application to GSoC starts on March 16. Before then, we encourage all prospective participates to socialize their ideas on the respective Development forum categories. Please tag all posts with the GSoC 2020 tag so that they are easily discoverable by others (e.g., students and mentors) interested in GSoC.

There are several open project ideas available on Swift.org — but potential projects do not need to be restricted to these ideas. Regardless if you are looking into working on a suggested project or one of your own creation, you are strongly encouraged to engage on the forums before applications are accepted to help shape your idea and ensure a good alignment with a mentor.

Prospective Mentors
Several individuals have already volunteered to be mentors, but more mentors are welcome! If you have never mentored a GSoC project but are curious, it is not too late to volunteer!

And if you want to program in Swift rather than on Swift, here’s three interesting ones to check out for a start:

Catrobat: “Pocket Code allows you to create your own games, animations, interactive music videos, and many kind of other apps, directly on your phone or tablet.”

Ideas Page for Google Summer of Code 2020

Amahi: “Making Home Networking and Storage Simple”

Google Summer of Code Ideas

AOSSIE is a collection of Australian projects with multiple iOS app ideas

… or if you’d rather work on Mac tools, there’s Homebrew and MacPorts and all sorts of apps with Mac versions on the list…

… or if you’d rather do something completely different, everything from astronomy software to a DJ mixing application — something for everyone to start their resume out with, so start your application planning NOW!

Join The Dark Side We Have WebCookies

Here is an excellent reference to keep handy for your next project … or when you’re finally getting that proper iOS 13-savvy redesign finished up for your current projects, not that any of us would be in that situation of course:

What a Designer Needs to Know about iOS Dark Mode When Working with a Developer

As a senior iOS app developer, it is my responsibility to analyse an app UI / UX design from a developer standpoint and provide feedback to the designers. One of the common problems that my team encounter is the communication gap between designers and developers, because of that, designers sometimes might create UI / UX design that is impossible or extremely difficult to implement by the technical team…

Feeling the pain? We know we’re feeling the pain.

With the introduction of dark mode in iOS 13, Apple has redefined the meaning of colors and UI styling in iOS, which further widen the communication gap between designers and developers. This has motivated me to create this article that from a technical perspective, explain what a designer need to know regarding adopting iOS dark mode in order to smoothen the communication between both parties…

And it is an excellent job of doing so!

More good reads for your designers are

How to design delightful dark themes

It is difficult to create a delightful dark theme. We cannot simply reuse our colors or invert our shades. If we do, we will achieve the opposite of what we want: we will increase eyestrain and make it harder to read in low light. We may even break our information hierarchy.

In this post, we share how to design dark themes that are readable, balanced, and delightful….

8 Tips for Dark Theme Design

When it comes to designing a dark theme for an existing app, you probably want to communicate the same spectrum of emotions in dark mode. But it’s better not to do it. Why? Because colors are actually perceived differently depending on their background…

Dark UI Design: A step-by-step guide

What’s New in iOS Design and Implementing Dark Mode on iOS

From the implementation side of things, here’s some articles worth reading for various tips and tricks:

Implementing iOS 13 Dark Mode in the new BigCommerce mobile app

Implementing Dark Mode on iOS

Implementing Dark Mode in iOS 13 (Instagram)

How To Adopt Dark Mode In Your iOS App

iOS 13 Dark Mode and companion DarkMode helpers

Dark Mode: Adding support to your app in Swift

Dark Mode on iOS 13

iOS 13 Semantic UI: “Dark Mode, Dynamic Type, and SF Symbols”

DynamicColor is “Yet another extension to manipulate colors easily in Swift and SwiftUI”

Backward compatible Dark Mode on iOS

Implement In-App Dark Mode Using Swift Observation Protocols

UPDATES:

Overriding Dark Mode

Mobile App Security: CryptoKit Your Critical Kit

Here’s a set of posts that you should make some time to read if you’re any kind of mobile developer, not because there’s anything strikingly new here — in fact, hopefully there isn’t! — but just to be sure that you have a good basic grounding in 2020’s app security requirements, both for iOS and that other platform:

Mobile App Security: Best Practices on Android & iOS

Android App Security: Best Practices

iOS App Security: Best Practices

Smartphone apps are the center of most peoples’ technology usage. They deal with a lot of private and sensitive user data like your personal health information or banking information. Protecting this data as well as possible is heavily important and the topic of this article.

In this article, we focus on iOS App Security. We’ll show you concrete techniques for making your iOS apps more secure. Our best practices cover means for securely storing data as well as sending & receiving data over the network. You’ll see why it is so hard to get security right and how you can improve your app security by using services from Apple and other providers…

Most of this hasn’t changed much since the last time we did any posts about security here 8-10 years ago, so it should pretty much be a refresher for you, with the possible exception of what you might have overlooked with all that actually exciting stuff out of last year’s WWDC:

Apple’s CryptoKit is a new API that was introduced in iOS 13 and provides lower-level APIs to perform cryptographic operations or implement security protocols.

CryptoKit is based on top of more lower-level APIs. They were available before but introduced additional risk factors since developers often used them in a wrong way.

CryptoKit also allows you to use the SecureEnclave to get cryptographically safe functions that are performant and optimized for the device’s hardware…

So that’s pretty much a solid win all around there, isn’t it? Next time you’re touching crypto stuff, do yourself and the rest of the ecosystem a favor and adopt it! Isn’t a great deal of resources out there, but here’s what we’ve noticed:

WWDC session 709: Cryptography and Your Apps and associated playground

Discover the New Apple CryptoKit Framework

Common Cryptographic Operations With Cryptokit

When CryptoKit is not Enough

CryptoKit and the Secure Enclave

Particularly that last one, if you want really really secure:

For us developers, how the Secure Enclave deals with biometrics is not the most exciting part about it, because we cannot query it directly. Even our biometric APIs are constrained and they are fully handled by the system, so we cannot really do much work on top of that. The real exciting thing is that we as developers can leverage the Secure Enclave to encrypt and decrypt information with keys that are specific to a specific setup in a specific device…

And that’s about it for state of the art security. For your non-up-to-date users, their recommendation is

If you want to support older iOS versions you can use those lower-level APIs or use well known open-source third-party libraries like CryptoSwift.

That one does look pretty much the most comprehensive to us at the moment as well, yep; but there’s a wide variety of libaries in this space with varying focuses, so we’ll just point you at the currently best maintained curated lists with applicable sections — those links should stay relevant for another decade we trust!

Awesome iOS: Security

Awesome Swift: Security

UPDATES:

Introducing Swift Crypto

Swift Crypto is a new Swift package that brings the fantastic APIs of Apple CryptoKit to the wider Swift community. This will allow Swift developers, regardless of the platform on which they deploy their applications, to access these APIs for a common set of cryptographic operations…

Core ML 3: How To Train Your Device Model

So things have certainly been moving right along since last we posted in 2017 in the iOS machine learning world haven’t they? Whilst we have our accustomed healthy skepticism of the frothily wild-eyed claims of The Universal Panacea Of Machine Learning you see floating around — 

CONCERNED PARENT: If all your friends jumped off a bridge, would you?

MACHINE LEARNING ALGORITHM: “YESSSS!!!!”

— this new being able to train models on our devices thing as well as all the other new stuff in CoreML 3 is a bit of a tipping point from “curiosity” to “something to think of serious applications for” we’d say!

If you haven’t taken much notice of the lingo so far and need some bringing up to speed, check out this course list from our friends at CourseDuck

The World’s Best Machine Learning Courses & Tutorials in 2020

And if you want lots and lots and lots of cross-platform machine learning resources, check out the awesome list

Awesome-Mobile-Machine-Learning

But we’re focusing on the device training today, and from what we can tell the reigning authority in that space is Matthijs Holleman’s blog, most notably the four piece series On-device training with Core ML completed last month:

  1. Introduction to on-device training
  2. Rock, Paper, Scissors (Lizard? Spock?)
  3. k-Nearest Neighbors
  4. Training a Neural Network

For sure read that whole series, and check out the rest of the blog too, we particularly liked

Core ML and Combine

And now you have a Combine processing chain that, every time you send it a UIImage object with imagePublisher.send(image), will automatically run a Core ML model on that image and process the results. Pretty cool!

And if you like those enough to pay for more, he’s got not just one but two books out: Machine Learning by Tutorials and Core ML Survival Guide — which we’re pretty sure makes him the go-to guru of iOS machine learning!

Other good introductions to new features and related goodies:

Working with Create ML’s MLDataTable to Pre-Process Non-Image Data

4 Techniques You Must Know for Natural Language Processing on iOS

Face Detection and Recognition With CoreML and ARKit, and Snapchat For Cats

Advancements in Apple’s Vision Framework: 2019 Year-in-Review

Text recognition on iOS 13 with Vision, SwiftUI and Combine

Build a Core ML Recommender Engine for iOS Using Create ML

MakeML’s Automated Video Annotation Tool for Object Detection on iOS

And here are some examples of classifiers and detectors we figure look useful, interesting, or just amusing:

Sound Classification on iOS Using Core ML 3 and Create ML

How to Build a Song Recommender Using Create ML MLRecommender

Building a Fake News Detector with Turicreate

Using Core ML and Natural Language for Sentiment Analysis on iOS

Detecting Pets with the iOS Vision Framework

iOS Build Cat Vs Dog Image Classifier Using Vision In 5 minutes

Photo Stacking in iOS with Vision and Metal

Using Sky Segmentation to create stunning background animations in iOS

And in that last category, our Machine Learning Rise Of Skynet Award goes to

Building a Face Detecting Robot with URLSessionWebSocketTask, CoreML, SwiftUI and an Arduino

Some time ago I created a little side project that involved an Arduino-powered servo motor that menacingly pointed at people’s faces with the help of CoreML, mimicking the Team Fortress 2 Engineer’s Sentry Gun. With iOS 13, I decided to re-write that using the new Socket APIs and SwiftUI…

“Mimicking,” he says now, but just you wait…

UPDATES:

How to make your iOS app smarter with sentiment analysis

Build a Touchless Swipe iOS App Using ML Kit’s Face Detection API

2020 iOS Conference Calendar

And as we begin another glorious year of iOS development, time to start planning our conference visits and talks for this year! Actually, it’s already closed for the earlier ones, so this year we’re going to expand our listings with the latest known CFP, so you can get an early start on planning next next year’s schedule too!

And if you haven’t given a talk before and don’t know where to start, we recommend you check this out:

How to deliver a talk at a programming conference

And if you’re really really serious about this conference thing, check out this dude:

What I’ve learned after sending 147 proposals to 36 conferences in a year

An inspiration to us all!

JANUARY: 

  • 15-18 iOS Conf SG — Singapore — CFP closed 2019.09.15 — see 2021 below
  • 15-18 Touraine Tech — Tours, France — see website 

FEBRUARY:

  • 3: dotSwift — Paris, France — CFP
  • 12-13: MGS20 — San Francisco, US — see website 
  • 20-21: MobOS — Cluj-Napoca, RomaniaCFP closed 2019.11.15

MARCH:

  • 2: QCon — London, UK — CFP — 2021 opens end of March
  • 10-13: Appdevcon — Amsterdam, Netherlands — CFP closed 2019.12.01
  • 12: T3chFest — Madrid, Spain — see website
  • 12-13: Mobile Trends — Krakow, Poland — see website
  • 18-20: try! Swift — Tokyo, Japan — CFP
  • 19-20: iOSCon— London, UK — CFP closed 2019.11.06
  • 24-25: MacAdUK— London, UK — see website
  • 28: CodeFest— Novosibirsk, Russia — CFP
  • 30-April 1: MobileTechCon — Munich, Germany — see website

APRIL:

  • 9: QCon — Beijing, China — see website
  • 15-17: Devoxx — Paris, France — CFP
  • 16: MGS Singapore — Singapore — see website 
  • 27-29: GOTO Chicago— Chicago, US — see website 
  • 28-29: CodeMobile— London, UK CFP closed 2019.11.15
  • ??: NSNorth— Montreal, Canada — see website 

MAY:

JUNE:

JULY:

AUGUST:

SEPTEMBER:

  • 6-9: iOSDevUK— Aberystwyth, UK CFP closed 01.31
  • 9-11: KotlinConf Montréal, Canada  CFP 03.31
  • 16-17: MGS Europe — Berlin, Germany — see website 
  • ??: NSSpain Logroño, Spain — see website 
  • ??:  /dev/world — Melbourne, Australia — see website 

OCTOBER:

NOVEMBER:

  • 4-6: NSBrazilSão Paulo, Brazil see website 
  • 6: Do iOS— Amsterdam, Netherlands see website 
  • 9-13: GOTO Copenhagen— Copenhagen, Denmark  see website
  • ?? Swift HeroesTurin, Italy — see website 
  • ?? Swift AlpsCrans-Montana, Switzerland — see website 
  • ?? BA: SwiftableBuenos Aires, Argentina — see website 
  • ?? Swift & FikaStockholm, Sweden — see website 
  • ??: Mobile EraOslo, Norway see website 
  • ??: Swift India— Bangalore, India — see website 

DECEMBER:

JANUARY 2021: 

Other resources to keep an eye on as the year progresses:

CocoaConferences

Tulula iOS — has a handy “CFP is open” badge!

 Find your next tech conference

Tech Events Online

CFP Land’s Upcoming Conference CFPs

The Best Swift and iOS conferences in 2020

The Complete List of Mobile (iOS and Android) Conferences in 2020

The comprehensive list of Tech Conferences 2020 (960+ Conferences!)

And a presentation tip for those code snippets!

Rx For Reacting To Combine-ations

Remember all the fuss about FRP back when Reactive Cocoa was all the new hotness? Kinda a good chuckle as 2020 approaches, isn’t it? Whilst its appeal turned out to be, as they say, selective, it and later FRP libraries such as RxSwift do have a following among those who don’t mind fighting the framework (have us tell you the story of the MQTT/Core Data/RAC stack we parachuted in to save the day for some time, if you want to see a visibly apoplectic troll, but hey, we managed to drag it across the liquidity event finish line, it’s all good) but general consensus is of the RxNot mindset that designing for maintainability is difficult enough already without seriously considering an architecture lacking any first party support and actively hostile to established platform paradigms…

… and then, all of a sudden! Here. We. Are. With. Combine:

Introducing Combine: Combine is a unified declarative framework for processing values over time. Learn how it can simplify asynchronous code like networking, key value observing, notifications and callbacks.

Combine in Practice: Expand your knowledge of Combine, Apple’s new unified, declarative framework for processing values over time. Learn about how to correctly handle errors, schedule work and integrate Combine into your app today.

Well, that’s certainly a great deal of previously passionate architectural debates rendered instantly obsolete, t‘isn’t it now? OK, Rx fans, take yourselves a victory lap for being all ahead of the game, grab yourself the RxSwift to Apple’s Combine Cheat Sheet and call it a day. The rest of us, well, time to get catching up now!

The first bookmark you need is this veritable epic of online documentation, by virtually unanimous agreement the most comprehensive and reliable source on this subject, not excluding Apple:

Using Combine by Joseph Heck

The book is available online at no cost. If you find the content useful, please consider supporting the effort with a purchase of the PDF or ePub version. The money collected for sales of this book will go to hiring editors (copyediting and technical editing), and if sufficient funds exist, hiring graphic design for diagrams. The content for this book, including sample code and tests, are sourced from the GitHub repository

However, if that’s a little intimidating to dive right into, here’s our picks for the best quick reads and views to get started:

SwiftUI & Combine: Better Together

Combine101 by a coauthor on the inevitable Wenderlich book

Swift Combine Framework Tutorial: Getting Started

Getting started with the Combine framework in Swift

A Crash Course in Combine

OK then, now that we’ve got some basic grounding, let’s take a look at some real example apps:

MovieSwiftUI: “SwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.”

2048-swiftui: “2048 game using SwiftUI and Combine.”

CombineSlotMachine: “A basic slot machine game that demonstrates using the Combine framework in a UIKit app.”

And the next place to check out is the GitHub repos and Slack channel at

Combine CommunityCommunity projects & experimentations around Apple’s Combine framework

Note particularly awesome-combineCombineDataSources, and CombineCocoa.

And here’s a selection of the more interesting miscellaneous tips and tricks we’ve found:

Modern Networking in Swift 5 with URLSession, Combine and Codable

Hmmm, looks like CareKit uses Combine and CoreData as a local database…”

Error Handling in Swift Combine Framework

Error handling in Combine explained with code examples

Debugging with Swift Combine Framework

Combine debugging using operators in Swift

GRDBCombine: “A set of extensions for SQLite, GRDB.swift, and Combine”

Using Combine to Supplement Delegates With Publishers

CombineGRPC, a library that integrates Swift gRPC and Combine

Map vs FlatMap vs SwitchToLatest

Simple custom Combine operators + Building a custom `sample` operator

Creating a custom Combine Publisher to extend UIKit

Backpressure in Reactive Streams

Playing With Combine: Grid Layout in SwiftUI

Should be right up to speed making it through all that!

UPDATES:

Using Swift’s CombineLatest Effectively

Processing Published Elements with Subscribers

Using Combine for Your App’s Asynchronous Code

Processing URL Session Data Task Results with Combine

How to download files with URLSession using Combine Publishers and Subscribers?

Refactoring a networking layer to use Combine

Combine + Diffable Data Source

Swift by Sundell Combine (basics)

Getting Started With Combine

Introducing Combine

Understanding Combine

The ultimate Combine framework tutorial in Swift

Observing Nested Properties in Combine

Profiling and debugging your Combine code with Timelane

Published properties in Swift

Combine and SwiftUI views

Asynchronous Programming with Futures and Promises in Swift with Combine Framework

Recombine: “A Swift Redux Library utilizing Apple’s Combine Framework”

MovieSwiftUI: “SwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.”

Black Friday Deals 2019

Seems like the Black Friday deals get a little earlier each year don’t they? In fact, we’re hurrying this post out because there’s eight hours fifty-three minutes left in a Black Friday deal that, in fact, ends Wednesday morning:

Black Friday 2019 — special offers on Pixelmator apps

Starting today, you can get the amazing Pixelmator Pro for 25% off. This discount will be available for a week, until December 3rd. In addition, Pixelmator Photo, our incredible photo editor for iPad, is completely free for 24 hours until 9am ET, November 27th. Spread the word!

So hurry on over to App Store on your iPad and grab that.then

… and speaking of free stuff, Packt has not only the usual discounts pretty much everybody that does e-learning has on but a completely free week as well, so if you haven’t got an account there now’s a particularly good week for it! 

… and speaking of e-learning, looks like the $99 a year subscription is going to be a regular thing over at 

raywenderlich.com Black Friday Sale: $99/year Subscriptions and More!

Of which there’s enough there this year on SwiftUI and Combine and all that new stuff we need to get up to speed on right quick that we finally figured it was likely worth shelling out for a subscription this year, recommend you seriously consider it too!

As usual, there’s a macOS / iOS developer focused deals repo up on Github

💰💸💰 Black Friday Deals 💰💸💰 

And Michael Tsai has deals on his own apps and a roundup here!

Black Friday 2019

This Xcode Goes To 11

Well, this has been a particularly exciting year on the Xcode front, hasn’t it?

  • Xcode 11 supports development with SwiftUI
  • SwiftUI live views and inline results in playgrounds are supported…
  • Xcode 11 adds support for Mac Catalyst to bring iPad apps to the Mac…
  • Xcode now supports creating and working with Swift packages, as well as adding, removing, and managing package dependencies…
  • An XCFramework makes it possible to bundle a binary framework or library for multiple platforms…
  • The new Metrics organizer shows battery life and performance analytics for your app to help you drive optimizations…
  • Xcode 11 supports the new Apple Development and Apple Distribution certificate types. These certificates support building, running, and distributing apps on any Apple platform…
  • Metal is available in iOS 13 and tvOS 13 simulators when running on macOS 10.15…
  • Introduces the ability to view inline code diffs for changes in the Source Editor…

Not sure “particularly exciting” covers it actually, this is the biggest Xcode update in the history of ever far as we can remember! Read the whole thing, and then the latest point release notes up to 11.3 Beta as we type this; and here’s a couple particularly good visual-enhanced tours of the new goodies:

Xcode: All the Way to 11

What’s new in Xcode 11? [Updated for 11.1 and 11.2]

Personally, this version of Xcode is a veritable benediction, given how many years we’ve been desperately looking forward to disposing of third party dependency managers…

Ready for Swift Package Manager?

Replacing CocoaPods with Swift Package Manager

Launching the SwiftPM Library + SwiftPM Catalog

…and once more being able to use workspaces as actual, y’know, workspaces. We’re not quite there with our latest project — the last serious roadblock is Firebase requiring binary framework support — but we are very close indeed! Mind you, we did have to do some considered refactoring to dispose of some pods that weren’t Pure Swift™, there’s a good if overly despondent summary of the various existing drawbacks here:

Dependency Heck

The state of iOS dependency management in 2019 is not great, and might get worse before it gets better…

Although we disagree with that completely, it’s orders of magnitude better than Xcode 10 even with the loose ends lying about still and getting better by the day, we say! In the meantime, aside from the third party dependency migration pains, even more important in the future is it’s much easier now to manage your internal dependancies and modularity with SPM:

Update your existing iOS Framework to Swift Package

Creating Swift Packages in Xcode + Editing A Swift Package

Managing dependencies using the Swift Package Manager

And that’s about enough for SPM for now. Next thing we’d like to highlight from that intro list is what drives that Metrics organizer, in case you’d overlooked it so far:

MetricKit

With MetricKit, you can receive on-device app power and performance metrics captured by the system. A registered app receives reports containing data about the previous 24 hours at most once per day…

Introduction at Improving Battery Life and Performance

NSHipster has a deeper dive in Metric​Kit

And for a really deep dive, check out MetricKit Internals!

SwiftUI and Catalyst are going to require some deep, deep diving of their own; for now, we’ll list miscellaneous other new and old Xcode tips we’ve collected since The Xth-Code Files: Xcode 10 Tips:

one small change for xcode, one giant leap for productivity

XCode allows you to take a snapshot of the state of the app you are developing and restore it later when you run the app or run the tests. Pretty cool!

Xcode 11 environmental overrides

Have you used the accessibility inspector to change the dynamic type size of your running app? Did you know you can do that directly from the debugger with Xcode 11? Even better, it allows you to override the interface style to quickly switch between light and dark modes…

Sherlock turbocharges your iOS simulator

There aren’t many times outside of WWDC where Apple developers see a new tool and immediately think “I need that in my life.” Sherlock by Inspired Code is one such tool: it injects itself into the iOS Simulator so that it can monitor views and adjust them in real time…

NSHipster’s simctl has Simulator tips you really want to know about

Better Storyboards with Xcode 11

Using Xcode Previews with existing views without using SwiftUI

Add a View <> ViewModel Jump To Counterpart

XCAssetsKit: “.xcassets parser written in Swift”

QuickLook plugin to visualize .car files (compiled Asset Catalogs)

Speeding up with Xcode Behaviors

Awesome-Xcode-Behaviors

The fastest way to Xcode: “Using the power of aliases in your Terminal”

Xcode: Basics of the four-block wonder aka “Navigate to Related Items”

37 Xcode Tips and Shortcuts to speed up your daily development

Unused images and resources clean up in Xcode

Unused localized strings clean up from a Strings file

Variable Width Strings

Where the &$!#% Is Localizable.Strings?!?

PoeditApp: “The fastest and most convenient way to translate apps & sites with gettext”

Periphery: “A tool to identify unused code in Swift projects.”

Streamlining your development workflow with Xcode Templates

ios-project-template: “iOS project template with fastlane lanes, Travis CI jobs and GitHub integrations of Codecov, HoundCI for SwiftLint and Danger”

Building Faster in iOS with Bazel

Project generation: Introduction to development of Tuist: “Bootstrap, maintain, and interact with Xcode projects at any scale”

And finally, to remind us that not quite everything is better these days:

Xcode​Kit and Xcode Source Editor Extensions

When we last wrote about extending Xcode in 2014, we were living in a golden age, and didn’t even know it…

Ah well. There’s still some good ones out there — our Most Useful™ Award goes to

SwiftMockGeneratorForXcode — An Xcode extension (plugin) to generate Swift test doubles automatically.

Check it out!