Topic

Safari

A browsable archive of writing and notes across the site.

Post

Build Process

A programming language goes through roughly five stages on its way to a running program, each with its own tool: Preprocessor Compiler Assembler Linker Loader Let’s walk …

Post

Building a little utility: Swwwitch

I saw something making the rounds in the dev community recently, so I built a small tool — a quick way to consolidate a few Cocoa-app features I’d been meaning to try. …

Post

How Mac apps launch at login

Launching at login is one of the most common features for a Cocoa app — especially the menu-bar utilities that are meant to be always-on. Let’s walk through how to add this …

Post

How do dockless Mac apps work?

Menu-only apps are one of the most common patterns in Cocoa-land. They don’t take up a spot in your Dock, they don’t get in the way when you’re switching across …

Post

Using Yinxiangbiji in Safari on an English-language macOS

Evernote runs a separate account system in China — Yinxiangbiji (印象笔记) — and last year the team there spun off entirely. But the Safari Web Clipper is still the same extension …

Post

Adding a backgroundColor to NSView

NSView is the most basic building block in Cocoa — the foundation of every Mac app’s view hierarchy, exactly like UIView is for iOS. But the dead-simple backgroundColor …

Post

The Subjects in RxSwift

All diagrams in this post are from the book RxSwift - Reactive Programming with Swift. In the Rx world, a Subject is something that’s both an observer and an observable. The …

Post

Apple Event Sandboxing

Background I’ve been working on a small Mac app that runs an AppleScript to pull data out of OmniFocus and visualize it. Problem: it kept coming back with no data. The cause …

Post

Tracking down a Shadowsocks traffic leak

Update — 2019-01-29 First thing this morning, the moment I plugged into the office network the download rate shot up to 600 KB/s. Sure enough, it was that same …

Post

UserDefaults and Keychain

Apple offers several persistence options, and UserDefaults and Keychain are the two you reach for most often in day-to-day app development. From past conversations with colleagues …

Post

Making a "Send to 2Do" Safari bookmarklet

Drag the link below onto your Favorites Bar. The default click behaviour simulates navigation on the current page, and the destination URL is whatever you put after …