Computer History
12 Map Happenings that Rocked our World: Part 9 - Etak Navigator
What do Tequila and Atari have to do with modern-day navigation systems? More than you might think. This is a fascinating article about Etak, the first navigation system for cars in a pre-GPS. era. It used a technique called dead reckoning to determine your position based on estimates of speed and changes in direction.
Swift
GraphQL essentials for iOS development
This is a great introduction to GraphQL, and how to use it in iOS apps. One of the advantages of GraphQL is that you can define queries that return only the data you need, in a single request - for example, if you want to display a list of orders, including their details.
Natascha also wrote a follow-up article on how to use the Apollo GraphQL client for iOS, definitely check this one out, too.
SwiftUI
EnvironmentKit
SwiftUI's environment is more powerful than you would assume at first. In fact, it is one of the driving forces of view modifiers, and the reason why you can change the look and feel of views inside view containers by applying view modifiers to the container itself.
If you've ever written custom views yourself (or you've been following my SwiftUI Components tutorial), you know that defining custom environment values requires you to write quite a bunch of code.
EnvironmentKit is a great library that makes this a lot easier - thanks for putting it together, Daniel!!
Swift on the Server
Getting Started with Structured Concurrency in Swift
This is a great introduction to structured concurrency. Not surprisingly, most of the code samples are written with a server perspective in mind, but it's easy enough to apply the concepts to client apps as well.
Software Engineering
Barbara Liskov on programming language design
In this video about Data Abstraction & Object-Oriented Programming, Barbara Liskov shares some insights into the past and future of OOP which I found really interesting - particularly whether OOP and cloud computing go along well.
But the thing that really got me thinking was her saying "you're inventing a user interface with very little constraints about what you're trying to do".
Now, most of us don't invent programming languages on a daily basis, but we do build APIs. Even if you're not building a full-blown SDK, the code you're writing for your apps still has to be consumed by other parts in your app - either by you, or your co-workers. This is why coming up with good abstractions and a good design is important - your APIs are the building blocks that will either constrain or liberate consumers of your APIs.
Both aspects are important - there are times when you want to constrain what people can do with an API. Alex Ozun gave a great talk about this at Swift Heroes 2024. If you don't want to wait until the recording of his talk becomes available, check out this blog post series he's started: Type-Driven Design with Swift
Productivity
Big Little Wins
Did you know that Xcode now provides code completion based on the file name? Or that there is now a real-time preview of the documentation for the currently highlighted symbol (open the code editor assistant with ⌃ ⌥ ⌘ ↩
, then select Documentation Preview in the jump bar)?
Zamzam has compiled these and a ton of other gems into a presentation - check it out here.
Business
Introducing AltStore PAL
AltStore PAL is one of the first Apple-approved alternative app marketplaces in the EU. AltStore itself has been around for a couple of years, but it required a number of additional steps (for example, you had to install AltServer on your desktop machine).
With AltStore PAL, this has become easier, but installing alternative app stores is still a bit of a confusing experience (this (German) video pretty much reflects my own attempt installing AltStore PAL), and you have to pay close attention to the various prompts on screen to succeed - Apple certainly didn't make this a one-click experience.
AltStore's goal is to provide an alternative distribution channel for apps that wouldn't pass Apple's review guidelines for some reason or the other:
This is about all the indie developers who’ve ever received a phone call telling them their app is rejected, but not telling them how to fix it; all the high schoolers who couldn’t release their app because it “wasn’t good enough”; all the startups who missed their launch dates due to Apple requesting yet another resubmission; all the users who think tech is boring now (it is) and assumes that’s just how it has to be (it doesn’t).
I'm curious - are you planning to use AltStore to distribute your apps? Let me know (just hit reply, or tweet at me)
Tools
Visualise JSON
JSON (which stands for JavaScript Object Notation) is a popular way to store and share data between apps, and it's used in may APIs. One of its advantages over, say, XML is that it is both humanly and machine readable (technically, XML is also humanly readable, but try reading and understanding a .pbxproj
file, and you will understand what I mean).
JSON Crack is a great tool for visualising, navigating, and even editing JSON. So if you need to get an overview of a complicated API result, change all occurrences of an attribute name, or just explore a configuration file, give it a try.
Comment
Note from the editor: So... you probably received a draft issue of Not only Swift just minutes ago... Which goes to show that
With that out of the way - here is the issue I intended to send. Enjoy!
I've just returned from Swift Heroes 2024 in Turin, Italy.
This has been the third time I've spoken at this conference, and - as in previous years - its been a great experience. It was wonderful to meet many new people (and see familiar ones, too!), and I had many inspiring conversations with so many of you (I even talked to a criminologist!).
I can't recommend this conference more - thanks to the organisers for putting on a great event, and for being amazing hosts!
In addition to my workshop(*) "Make It So - Building a productivity app with SwiftUI and Firebase", I also gave a presentation about creating amazing slides. Titled "One more thing - How to create insanely great slides using Keynote", this was the first time I was able to go on stage with my slides actually not being finished yet - as I used my slide deck to show the audience live on stage how to use Keynote and its tools.
(*) BTW, if you weren't able to make it to the workshop, I created an interactive DocC tutorial that you can go through in your own time - it's in the tutorials section on my blog.
Peter