Swift Around the Web
Codable Dates π
Working with dates that are coming in different formats from the API (and that need to be sent in various formats to the API) can be really tricky. Good to know how simple and clean this is to handle using a Codable
object!
Coding
Using A Custom Font With Dynamic Type
I've definitely had trouble convincing my team to add Dynamic Type support before, not because it wasn't the right thing to do, but because it required the pain of maintaining ten text styles and deciding how to scale these across twelve content size categories as mentioned in this article.
This is why the iOS 11 UIFontMetrics
is such a HUGE deal!
"The
UIFontMetrics
class takes away the need to maintain a table of fonts (typeface and size) for each of the twelve content size categories. You do still need to decide on a font for each style at the default content size. This font size is then scaled by the font metrics when the user changes the content size."
It's still not easy, but hopefully simpler enough to make it worth it for your app!
Other Cool Stuff
Thereβs A Genius Street Artist Running Loose In New York, And Letβs Hope Nobody Catches Him
Choose to see differently π
Videos
The Secret Life of Types in Swift
Great under-the-hood deep dive into Swift's type system and how to take proper advantage of this deeper knowledge in your own code.
Swift Evolution
Task-based concurrency manifesto draft
So far, Swift was carefully designed to avoid most concurrency topics. Instead, as iOS programmers, we have used GCD or other threading paradigms as needed. One of the goals now is that "Swift should provide (just) enough language and library support for programmers to know what to reach for when concurrent abstractions are needed. There should be a structured 'right' way to achieve most tasks." Other goals include Safety, Scalability, Performance, and Excellence π
Swift Code
- TvOSScribble - Handwriting numbers recognizer for Siri Remote
- ChainPageCollectionView - A custom View with fancy collectionView animation
- HGPlaceholders - Nice library to show placeholders and Empty States for any UITableView/UICollectionView in your project
- Disk - Delightful framework for iOS to easily persist structs, images, and data
- Viewer - Image viewer (or Lightbox) with support for local and remote videos and images
- FlagKit - Beautiful flag icons for usage in apps and on the web.
Business
Here's what you'll be able to do with Siri + Apps in iOS 11!
Good examples of what real-world apps are doing with Siri intents, and some ideas for iOS 11. Now that the Camera app will be able to automatically scan QR Codes in iOS 11, the Visual Codes intent might be something to consider for your app...
Other Platforms
Swift in Android Apps
The state of Swift on Android with Swift 4:
"With Swift 4 on the horizon momentum has picked up again using Gonzalo Larralde's swifty robot environment that can be used to build a swift toolchain for Android in a Docker container. This, and a couple of recent PRs means a viable environment exists that opens the possibility that model, business logic and network code could be shared between Android and iOS when it is written in Swift."
Core ML with iOS/Kitura Swiftβ¨: A comparison study with Watson Service
A fascinating article comparing Core ML to a mature Watson Service platform. Core ML still has some way to go, but I'm guessing it's only a matter of time for necessary improvements to be made.
"Thereβs more to this than just the accuracy rate. Another consideration is the trained model. Both Watson and Core ML provide the ability to customize the classifier to use another model to improve accuracy. However, the effort to create and convert a better classifier trained ML model for iOS is much larger than using a simple Watson service. For Watson, you only need to provide a set of positive and negative images, and to train the engine. For Core ML you need to create a complex Python model and convert it into a
mlmodel
file."
Swift Thoughts
Happy staring at the sun day π
But first, I'd like to apologize for last week's pricing confusion around training your own CoreML
model article I posted last week. I mentioned that the cost is $500, but that is if you forget to turn off your Amazon instance. The actual pricing for 6-7 hours (which is what you'll need most likely) is closer to $4.55.
Enjoy the week!