# 61 : Two Hours Without a Smartphone

Published on

Photo by Jonas Leupe on Unsplash

Get weekly handpicked updates on Swift and SwiftUI!

Weekly Comment

Last week, one of my belongings needed repair. The shop informed me it would take about two hours, so I set off by car to a shopping mall with only my laptop in tow. It wasn’t until I handed over my item that I realized a glaring oversight: I had forgotten to bring my smartphone. What might seem like a minor slip-up turned out to be the start of a series of unexpected inconveniences over the next two hours.

First, I looked for a café to take a break. Although my Apple Watch was linked to a few bank cards, the first several cafés I visited only accepted payments via WeChat Pay or Alipay, and at the time I completely overlooked the option of using facial recognition payment. With no cash on hand and no smartphone, I wandered across three floors of the mall before finally finding a café that accepted payment from my Watch. When I tried to use the mall’s Wi-Fi, I found I couldn’t receive the verification code without my phone. In the end, a kind server used her own phone to help me log in.

After retrieving my repaired item, I headed toward the parking lot, only to recall that the mall’s parking fee had to be paid through a WeChat mini-program. Fortunately, I still had my laptop, which allowed me to contact my wife and ask her to pay remotely on my behalf.

Of course, I’ve always understood the importance of smartphones. But not until I truly found myself without one did I fully appreciate this fact: in today’s urban life, if you haven’t made special preparations for being without your device, you might find your daily routines strikingly difficult.

In last week’s commentary, I expressed concerns about the excessive “smart” infiltration of modern electronics. Reflecting now, as an individual in this society, haven’t I already intertwined my lifestyle and work habits with these “smart” experiences?

Forewarned is forearmed. While enjoying the immense convenience of a fully “smart” world, I need to prepare for those occasional non-smart scenarios—or even more sudden societal upheavals. Perhaps these fleeting “non-smart moments” can help me reassess my relationship with technology and rediscover some core essence of life that often remains obscured behind layers of automated convenience.

Originals

Typefully: Say Goodbye to the Hassles of Social Media Posting

As Dave Verwer mentioned in a recent issue of iOS Dev Weekly, developers are becoming increasingly dispersed across the internet, making it unlikely for us to return to the days of relying solely on a single social media platform. In light of this trend, as a blogger, I needed a tool to simplify content posting and management across various social media platforms. Over the past month, I started using Typefully to achieve this goal. In this article, I’ll share some insights and experiences from my usage.

Follow me on BlueSky: @fatbobman.bsky.social

Recent Selections

Concurrency Step-by-Step: Reading from Storage

Many developers encounter various concurrency-related issues when migrating to Swift 6 mode. If your primary goal is simply “making the code compile,” you might still be in the “appeasing the compiler” beginner phase. In this article, Matt Massicotte demonstrates multiple ways to achieve compilation through a seemingly simple code example, analyzing and comparing the implications and applicable scenarios of each approach. Matt emphasizes that when designing concurrent systems, prioritizing simplicity and maintainability is more important than blindly pursuing advanced language features.

Eight Fun SwiftUI Details in My Practice Planner

During the development of the Elite Hoops app with SwiftUI, Jordan Morgan delved into how thoughtful design details can significantly enhance user experience. By combining animations and interactive design, Morgan not only optimized functionality but also showcased the flexibility and innovation potential of SwiftUI. In this article, he shares eight interesting implementations that offer inspiration and practical tips for developers.

What Happens When You Move a File in Git?

Does Git save file diffs or complete snapshots when changes are committed? And if files or folders are renamed, does Git create new storage copies? Bruno Rocha explored these questions while planning to rename a folder with a large number of files. In this article, he shares key findings about Git’s inner workings:

  • Git doesn’t store incremental differences but instead creates complete snapshots based on file content. By using hash calculations, it avoids storing duplicate file contents.
  • Renaming files does not lead to duplicate storage of their contents but does create new tree objects to reflect name changes.
  • Frequent renaming of folders in large or complex file structures can result in many new tree objects being generated, which may increase storage overhead or reduce performance.

any and some

In Swift’s protocol-oriented programming, protocol types are essential for building flexible APIs. In this article, Kyryl Horbushko provides a detailed exploration of the any and some keywords, their uses, and applicable scenarios. With in-depth examples and comparison tables, this article helps developers understand the differences and advantages of each keyword in real-world applications.

Simple State Sharing and Persistence in Swift

Point-Free has been gradually extracting mature and reusable functionality from the TCA framework into standalone open-source libraries. The recently released Sharing is one such library. By providing a powerful @Shared property wrapper, Sharing enables developers to efficiently share state across multiple modules of an application and persist data to external storage systems such as UserDefaults and file systems. This library enhances state management flexibility while simplifying persistence in complex scenarios.