Weekly Comment
Recently, Baidu (China’s largest search engine company)‘s stock price has risen significantly, which is not unrelated to a widely circulated news story. Reportedly, Baidu’s autonomous ride-hailing platform “Apollo Go” deployed 1,000 self-driving taxis in Wuhan, achieving impressive market performance and triggering deep concern among some traditional taxi drivers.
Soon, the news was proven to be inaccurate. The actual operational scale is 400 vehicles, and in Wuhan’s market of nearly 20,000 taxis, this scale is not yet sufficient to cause a significant impact. Nevertheless, self-driving taxis have won favor with many consumers due to their more competitive prices, brand-new vehicle conditions, and better privacy experience. As the deployment scale expands, its impact on the existing market and numerous taxi (ride-hailing) practitioners will be inevitable and irreversible.
Like previous industrial revolutions, the rapid development of AI will inevitably impact many industries, even causing disruption. In this AI era, while enjoying its conveniences, each of us will face the challenges it brings. Facing this unavoidable structural change, relying solely on market self-regulation may not be enough to address the destructive impact of AI on traditional industries and the employment environment. This requires the concerted efforts of the whole society and government, adopting methods that conform to development laws to alleviate the more severe challenges we currently face and will face.
While encouraging AI development, governments should innovatively formulate laws and policies, utilizing special taxation, fiscal subsidies, and other measures to assist industries and workers significantly impacted by AI in achieving transformation or re-employment. Various indications suggest that AI may not elevate the upper limits of human technology in the short term; however, its impact on labor-intensive industries is both rapid and profound.
Of course, specifically in the taxi service industry, there is an inevitable cost difference between human-driven and driverless operational models. If the human element cannot become an added value to the service, and instead negatively impacts the passenger experience, then replacement by driverless or other innovative operational models becomes a natural progression.
However, it is worth noting that these AI companies, often possessing Internet business DNA, tend to adopt low-price strategies regardless of cost. They may first conduct a “cleansing” of the existing industry, and then use their established market advantage to rebuild price monopolies. This approach not only potentially causes irreversible damage to society but also deviates from the original intention of AI serving society. We must guard against such business behaviors that may lead to market imbalance to ensure that the development of AI technology truly benefits society.
The ultimate goal of AI should be to promote better human development and improve overall quality of life, rather than benefiting only a few companies and individuals. At the same time, we must acknowledge that for industries and individuals who struggle to adapt quickly to the new era, being affected or even replaced by new things, though regrettable, is an unavoidable reality in social development.
In this era of change, we must embrace innovation while focusing on social equity; pursue efficiency while maintaining humanitarian care. Let AI become a tool to help humanity, not a force that disrupts social balance.
Originals
List or LazyVStack: Choosing the Right Lazy Container in SwiftUI
In the world of SwiftUI, List
and LazyVStack
, as two core lazy containers, offer robust support for developers to display large amounts of data. However, their similar performance in certain scenarios often causes confusion among developers when making a choice. This article aims to analyze the characteristics and advantages of these two components to help you make a better decision.
Recent Selections
SwiftUI Pitfalls: My Failures and Lessons Learned
In this article, gloomikon shares his experiences and lessons learned while implementing a chat interface tooltip using SwiftUI. The author provides a step-by-step guide, detailing various challenges encountered during the development process and their solutions. These include using overlay
to display the tooltip, correctly positioning the tooltip, resolving view obstruction issues, implementing show/hide functionality, and adding animation effects. gloomikon demonstrates how to utilize various SwiftUI features (such as fixedSize
, alignmentGuide
, zIndex
, scaleEffect
, etc.) to handle complex layout and interaction requirements. The article offers readers practical SwiftUI development insights and approaches to solving common pitfalls, making it a valuable resource for developers working with SwiftUI.
Just Toolbox Unifying Development with SwiftUI
In this article, Justin Yan shares his comprehensive experience of developing and releasing a developer toolbox application that spans across all Apple platforms using SwiftUI. The article explores the multiple advantages and challenges of developing with SwiftUI, covering topics such as cross-platform code sharing, API maturity, and the shift in UI design thinking—particularly how to move away from traditional UIKit and AppKit design mindsets to fully leverage SwiftUI’s cross-platform capabilities. Justin also discusses the unique advantages of using SwiftUI as an independent developer and shares how he overcame psychological barriers during the development process. This article provides insightful perspectives and experiences for developers looking to transition from other frameworks to SwiftUI, making it an invaluable resource for those exploring cross-platform development within the Apple ecosystem.
Introducing Entry macro in SwiftUI
In SwiftUI development, customizing environment values and focus values typically involves repetitive and cumbersome code. At WWDC 2024, Apple introduced the @Entry
macro, a new feature that significantly simplifies this process. In this article, Majid Jabrayilov provides a detailed guide on how to use the @Entry
macro and emphasizes its backward compatibility, allowing developers to utilize this macro on older versions of Apple platforms. This macro not only optimizes code writing but also enhances development efficiency, offering SwiftUI developers a more concise programming approach.
The emergence of Swift macros represents a substantial improvement for such scenarios, serving as a wake-up call for more Swift developers to design APIs using more unified paradigms and benefit from these new features. This goes beyond mere code simplification; it’s a push towards modern programming practices, encouraging developers to explore and adopt new programming patterns for more efficient problem-solving. This advancement not only streamlines the coding process but also promotes a shift in how developers approach API design and problem-solving in the Swift ecosystem.
Techniques for Automatic Merging of String Catalogs in Multi-Package Monorepos
In a multi-package monorepo, where each package has its own independent String Catalog, developers typically need to merge these catalogs manually or using tools. In this article, Luca Ban introduces a method that automatically merges these catalogs during the main app’s build process, without requiring additional scripts or manual intervention. This approach is achieved through appropriate code setup and Swift package configuration. It can significantly simplify the localization management process for large projects, especially those with multiple packages or modules. This centralized management approach can improve efficiency, reduce errors, and ensure localization quality across the entire application while maintaining the flexibility for each package to manage its localization resources independently.
Mobile Deployment Pipelines for $0
Jacob Bartlett’s article provides a valuable guide for iOS developers looking to implement free continuous integration (CI). The article offers a detailed walkthrough on how to build a CI pipeline for mobile applications using Fastlane and GitHub Actions, covering key steps from basic Fastlane setup to App Store Connect configuration. The author emphasizes the importance of using match for certificate management and provides methods for creating API keys to achieve automated deployment. This resource not only helps developers enhance their development practices and streamline deployment processes, but also demonstrates how to implement professional-grade CI workflows without incurring additional costs. It is particularly valuable for independent developers and small project teams, offering a cost-effective solution for improving their development and deployment processes.
UI testing improvements in Xcode 16
At WWDC 2024, Apple not only introduced Swift Testing but also enhanced the UI testing capabilities of the XCTest framework. Jesse Squires provides a detailed introduction to two new APIs: waitForNonExistence(withTimeout:)
and wait(for:toEqual:timeout:)
. The former offers an inverse functionality for waiting for elements to disappear, while the latter is used for waiting for element property values to update. Through practical code examples, the author demonstrates how these APIs improve the semantics and efficiency of testing, especially when dealing with loading states and content update scenarios. Squires also points out some naming inconsistencies and potential bugs, offering developers valuable insights. Although these improvements may seem minor, they significantly enhance the readability and flexibility of UI testing, providing iOS developers with more powerful testing tools.