S Link
Buddybuild - a CI/CD service built for Swift developers
Buddybuild is a continuous integration, continuous deployment and user feedback platform built specifically for mobile development teams. Buddybuild takes minutes to get setup, and automates the process of configuring and maintaining a reliable and robust infrastructure for teams to build, test, and deploy their apps.
Thousands of companies, like The Washington Post, Slack and Firefox trust buddybuild with their Swift development because it allows them to focus on what's important - building apps users love.
Start your free 3 week trial today, and stay focused on building apps users love.
The Industryβs Fastest eSignature API Integration
Embed docs directly on your website with a few lines of code. Test the API for free.
Swift Around the Web
Strongly typed identifiers in Swift
Great solution to a common problem - having to have a String
id as an identifier for a unique object on the server. The problem is that it could be any random string in there. So why not strongly type it to make the compiler point out the error? I agree that the first solution is the easiest to read, but the newtype
one is definitely tempting to write...
Friday Q&A: Swift.Codable
"Reflection is not a particularly good solution to this problem. Itβs easy to get it wrong and create security bugs. Itβs less able to use static typing, so more errors happen at runtime rather than compile time. And it tends to be pretty slow, since the code has to be completely general and does lots of string lookups with type metadata.
Swift has taken the approach of compile-time code generation rather than runtime reflection. This means that some of the knowledge has to be built in to the compiler, but the result is fast and takes advantage of static typing, while still remaining easy to use."
Coding
Natural Language Processing in iOS
NSLinguisticTagger
has been around since iOS 5, but it is only now that Natural Language Processing (NLP) is becoming more popular with the rise of conversational interfaces. Good tutorial on how to use NSLinguisticTagger
to extract blog post data from a web interface and load it into a native UI, including the language of the blog post and important words π€
Other Cool Stuff
Midnight sun
Over the past few weeks, I've been staying in Norway, the heart of the Midnight Sun! Seriously, the sun doesn't ever set! It was a struggle at first, especially when it comes to sleeping, but I really fell in love with it π
Videos
Why the Func
A beautiful conceptual look at functions and the balance between object-oriented and functional programming in Swift. Turns out we don't really need monads π
Swift Evolution
JIT compilation for server-side Swift
The IBM Runtimes compiler team has been working on a prototype JIT compiler aimed at server-side Swift, which will be open sourced in the near future:
"Despite the prototype JIT being built on OMR, the changes to the static side outlined above are largely compiler agnostic APIs/ABIs that anyone can use to build similar hybrid JITs or other runtime tools that make sense for the server space. As such, we felt that it was a topic that was worth discussing early and in public in order to allow any and all potentially interested parties an opportunity to weigh in."
Swift Code
- FaceCropper - βοΈ Crop faces, inside of your image, with iOS 11 Vision api. Blog post here
- ARuler - Measure distance using apple ARKit
- RealmContent - Light Realm-powered content management system. Blog post here
- TheGreatGame - π Open-source first-class iOS app dedicated to Womenβs Euro 2017. Blog post here
- SwiftQ - Distributed Task Queue
- Commander - Compose beautiful command line interfaces in Swift
Business
iOS 11 : 5 Low-profile updates app developers should not miss
Didn't realize it's so easy to modify the hidden notification preview text. Good tip!
Is Product Hunt useful for developer tools?
I only occasionally use Product Hunt, but there's no doubt that it's a great place to launch your product. At the worst, you get some free marketing. At the best, you get a lot of downloads and PR.
Funny story - this newsletter ended up on the top one random day recently! But aside from such lucky accidents, this is a super comprehensive guide to the prep and all the work it takes to even casually launch on there π
Swift Thoughts
Recently, due to some failures, I realized that I've been making decisions out of a place of fear instead of courage. That's not my usual way of doing things and I don't like it. And besides that, it doesn't really work! For the past few days, I've been reading Courage: The Joy of Living Dangerously by Osho and gaining my courage back:
"Courage is risking the known for the unknown, the familiar for the unfamiliar, the comfortable for the uncomfortable, arduous pilgrimage to some unknown destination. One never knows whether one will be able to make it or not. It is gambling, but only the gamblers know what life is."
In a weird way, it made me think of when Swift first came out. None of us knew what we were getting into, and that's a lot of the fun of the language! I'm happy to share this journey with all of you courageous people π