Writing61 notes2015–2026
Notes from the workbench.
Swift, Apple platforms, and whatever I was figuring out at the time. Most were first written in Chinese; the originals are one click away.
20267 notes
-
A new home for Stash
1 min
The new Stash website is live, with a preview of an app for keeping copied things and lifting the useful pieces.
-
Keeps 1.4.3 submitted for review: smoother currency scrolling
2 min
Keeps 1.4.3 (112) has been submitted for App Review with smoother currency scrolling and fixes for item details and punch calendar layout.
-
Keeps 1.4.0: every use counts
3 min
Keeps 1.4.0 brings paper price tags, punch-card goals, photo stages, better search, and automatic backups to iPhone, iPad, and Mac.
-
Let your things log themselves in Keeps
3 min
Three Shortcuts automations that record a use in Keeps without opening the app: an app that opens, an NFC tag on a water bottle, and a car that connects over Bluetooth.
-
LiftCoach on iPhone Duo
4 min
A first look at LiftCoach on iPhone Duo: two pages when it opens, a seated mode that turns the folded top half into a screen for the bench, controls in the side bar, and a Live Activity that fits the new island.
-
LiftCoach is on the App Store
2 min
LiftCoach 1.0.0 is available for iPhone, iPad, and Apple Watch. Plan strength routines, log every set, and see how your training adds up.
-
Keeps is on the App Store
2 min
Keeps 1.4.0 is available for iPhone, iPad, and Mac, with paper price tags, punch-card goals, six themes, and up to 30 items for free.
20202 notes
201919 notes
- How the .af and .rx extensions work in Alamofire and RxSwift 3 min
- Method dispatch in Swift 15 min
- Protocol Extension 3 min
- A few notes on LetsMove 3 min
- XPC Services 4 min
- Codable && Tuple 2 min
- How to generate a NSViewController without a Nib? 2 min
- A Swift quiz 2 min
- Libraries and frameworks 10 min
- Build Process 9 min
- Building a little utility: Swwwitch 2 min
- How Mac apps launch at login 7 min
- How do dockless Mac apps work? 6 min
- Using Yinxiangbiji in Safari on an English-language macOS 2 min
- Adding a backgroundColor to NSView 2 min
- The Subjects in RxSwift 4 min
- Apple Event Sandboxing 3 min
- Tracking down a Shadowsocks traffic leak 3 min
- Using a C file in a Swift Framework: an exploration 11 min
20189 notes
- UserDefaults and Keychain 5 min
- Making a "Send to 2Do" Safari bookmarklet 1 min
- My reading workflow 3 min
- Testing Swift code that uses system singletons in 3 easy steps 4 min
- Avoiding singletons in Swift 6 min
- Different flavors of dependency injection in Swift 6 min
- My favourite Mac apps 6 min
- What is LLVM 8 min
- In-app purchase 8 min
20178 notes
- Dependency injection using factories in Swift 6 min
- Modularising Xcode projects 10 min
- Handling non-optional optionals in Swift 6 min
- Understanding responders and the responder chain 4 min
- Capturing objects in Swift closures 6 min
- @autoclosure && @escape 4 min
- Everything you need to know about iOS 10 notifications 9 min
- Reading "Garbage Collection: Algorithms and Implementations" 1 min
201516 notes
- Building an elastic view animation with UIBezierPath 8 min
- A bit about Category in Objective-C 7 min
- Understanding the Objective-C runtime 20 min
- How we built the Guillotine menu animation for iOS 6 min
- [28] Implement strStr() 3 min
- [257] Binary Tree Paths 1 min
- [018] Length Of Last Word 1 min
- iOS remote push notifications: a deployment walkthrough 10 min
- Notes on singly linked lists 5 min
- [151] Reverse Words in a String 1 min
- Two Sum 3 min
- [160] Intersection of Two Linked Lists 5 min
- Notes on Lambda 4 min
- [152] Maximum Product Subarray 2 min
- Scala Day 2 6 min
- First post 1 min