This Is All I Wrote (So Far)

Structured Overview: Commented table of contents of what I think are my most important articles.

A couple of curated overviews for reference:


Posts by year: 2023 · 2022 · 2021 · 2020 · 2019 · 2018 · 2017 · 2016 · 2015 · 2014 · 2013 · 2012 · 2011 · 2010

2023

May 2023
May 26

11 or so Android Ebook Reader Apps for Academic Writing Workflows: Annotations are Hard

I tested a bunch of Android EPUB reader apps to see if annotations would work with my Zettelkasten workflow. The result: it’s not easy to improve the workflow.

May 25

BOOX Vector PDFs Are Already Colored

Ok, no need to investigate further: PDFs are colored if you use color pens, so I'm now just using that instead of replacing colors in the PDF source.

May 23

Colorize Onyx BOOX Notes Vector PDFs (Really Rough Edition)

I wanted to colorize greyscale vector notes. This led me down a rabbit hole of replacing color definitions in the PDF’s source code.

May 22

Boox NeoReader Annotation Export Is Meh

The Onyx Boox e-reader is equipped with a good e-book reader app, but its export is almost useless to parse and use in an academic context.

May 8

Safari (for Mac) URL Scheme

May 6

Detach Xcode Console -- via Terminal

May 2

Wrap HTML Tables in Figures using Nanco and Kramdown

On mobile phones, wide tables didn’t scroll horizontally – instead, they broke out of the content container and everything looked a bit wonky. So I wrap them in <figure> elements now.

April 2023
Apr 20

Website Rank in Common Crawl's C4 AI Dataset

Apr 18

Fetch Personalized Command Explanations with 'um' from Your Terminal

Apr 18

Create FastMail Masked Email Addresses with maskedemail-cli

Apr 17

VIPER Added to the Wiki

Apr 12

Copilot for Xcode Works Okay

March 2023
Mar 2

TableFlip v1.4.1 Released

February 2023
Feb 15

PSA: FileManager.trashItem (Maybe) Uses NSFileCoordinator Under the Hood Automatically, So You Shouldn't to Prevent Deadlocks

January 2023
Jan 24

Xcode Requires A Lot of Data for Swift Package Resolution

Jan 20

Getting to Know Jetpack Compose by Comparing Concepts with SwiftUI (Markus Müller's CocoaHeads Leipzig Presentation)

Jan 18

Dictionary.init to Make Use of Swift.Identifiable

Jan 18

The Difference between Entity and Value Object, and How They Relate to Swift's Identifiable and Equatable Protocols

Jan 9

woolsweater's SF Symbols Modeline

Jan 8

Use San Francisco Font for SF Symbols Everywhere in Emacs

Jan 3

Display a Random Inspiring Quote for Journaling or Shell Prompts

Jan 3

Migrating to modus-themes v4 and Going Through the Changes

2022

December 2022
Dec 29

How to Use SF Symbols in Emacs (for Tab Numbers)

Early 2022, I shared how I used circled digit unicode in tabs; here's how to use SF Symbols on macOS to get even better-looking results.

Dec 27

Better org-mode Agenda display-buffer-alist Settings

Dec 13

Making Your App Extensible with JavaScriptCore (CocoaHeads Presentation)

Dec 7

Manage Org Agenda-Related Buffers via display-buffer-alist

Dec 4

ChatGPT: Publish NSTextView Changes to ReSwift, but Also Use a Lamport Clock

Conversation log with ChatGPT.

Dec 3

Dec 3 and Dec 4: EmacsConf 2022 Live

Dec 1

Use System File Open Dialog for File Actions in Emacs (Just Once!)

November 2022
Nov 29

Mutating Struct and State Observers: How the Latter Will Be Notified Even for 'No-Ops'

Nov 29

Wiki Updates for Nov 29th

Nov 28

Org-Mode Outline Levels 9+

Nov 25

Gitea Ltd. Takes Over Gitea Open Source Project, Community Pushes Back

Nov 22

CocoaHeads Talk about JavaScriptCore Plugins on Thursday 2022-11-24, 7 p.m.

Nov 22

Smooth Scrolling in a Table View for Custom Shortcuts

Nov 16

There Could Be No “Later”

Nov 3

NSTableView Variable Row Heights Broken on macOS Ventura 13.0

October 2022
Oct 28

macOS Ventura App Compatibility

Oct 17

Sketch Employees for Hire

Oct 11

Sketch Layoff of 80 Employees — Does It Really Send an Alarming Signal?

September 2022
Sep 23

NSTextView (Plain Text) and the Pasteboard: PasteboardType.string Is Not Handled

Sep 21

Overview of Attribute Fixing in NSTextStorage

Sep 15

'Black Box' Unifies Software Modeling in Modules

Sep 15

Example of High Cohesion and Low Coupling with Presenter, View, and View Model

Sep 13

How to Fix When Some Text Changes Don't Come with Automatic Undo?

Sep 9

Reactive Code is Sequentially Cohesive

Sep 9

Delete to Beginning of Line in Emacs to Rewrite Code

Sep 7

10 Year Indieversary AMA Postmortem

Sep 7

Replacing zoom-window with winner-mode to Temporarily Change Window Splits in Emacs

August 2022
Aug 28

Wiki and Website Updates

Aug 27

10 Year Indieversary: AMA On Sep 6th

Aug 27

SwiftUI Isn't Easy to Get Into: My Road From Headache Towards Mastery

Aug 16

Drawing Studies: Tonal Values

Aug 10

Rely on @Published Property Wrapper Events, Not the Observed Object

Aug 9

Schedule End of the Work Day Using Org

Aug 8

Output Port Adapter for Single Point of Configuration in Complex UI

July 2022
Jul 27

Emacs Blogging: Insert Tag from YAML Frontmatter Posts

Jul 27

Disambiguate Code Signing Identities

Jul 26

New Library Pages

Jul 26

TDD Is About Writing Counter-Factual Statements

Jul 26

Key Binding to Select Paragraph or Org Element

Jul 20

TableFlip v1.4.0 Released

Jul 14

DevCleaner for Xcode

Jul 12

Mac App Notarization Workflow in 2022

Jul 9

Shift-Click in Emacs to Select – A Simple Change With a Complex History

June 2022
Jun 8

Free Cmd-W in Magit to Close the Buffer

May 2022
May 19

Magit's Killer Feature #1: Commit Text Completion Based on the Diff

May 14

@EnvironmentObject Is a Branched Global Variable

May 13

Happy People = Mac Users

May 10

Link Your Website to Mastodon via Metadata

May 9

Dependency Injection and the Tree of Knowledge

May 9

PSA: TextKit 2 Has Bugs

May 9

STTextView: A TextKit 2 Text Editor without NSTextView

May 4

Clean Downloads Folder on Mac with Hazel

May 3

Weak Self -- Closure Rules of Thumb

May 2

TextKit 2 Example App from the Apple Docs

April 2022
Apr 26

How to Upgrade Sendy from Version 5 to 6 from the Shell via SSH

Apr 22

Center Window on the Current Monitor in Emacs, Simplified

Apr 21

Transient Menus Galore

Apr 13

Fixing Our Recent Xcode 13.3.x Dependency Cycle Errors

Apr 9

How to Assemble Menu Bar App Screenshots for Mac App Store

Apr 8

Aergrind by Knock Coffee Grinder, and Their Amazing Customs Duty Service

March 2022
Mar 29

Add Any Directory to project.el's List of Projects

Mar 28

Get Your xcode.tips Card Printouts!

Mar 17

Prioritize hl-line Highlight Over Neotree Faces

Mar 9

More Swifty NSAttributedString Attribute Query Methods

Mar 8

Context Menu in Magit Status Buffers

Mar 6

The Playdate's Docs Are Made with More Love Than Most End Products

Mar 4

What's the Problem With Old But Excellent Mac Apps?

February 2022
Feb 18

Split Window in Emacs and Resize and Recenter Frame to Make Room

Feb 12

Add Numbers to Emacs tab-bar-mode Tab Titles for Quick Access

I'm adding CIRCLED DIGIT unicode characters to my tabs in Emacs to select them by number.

January 2022
Jan 28

Copy Dropbox Link to File Using Maestral

Jan 22

I Uninstalled the Dropbox App in Favor of Maestral

Jan 22

Closing Circe IRC Buffers in Emacs Without Leaving the Room

2021

December 2021
Dec 29

Remote Bulk Editing Using Regexp with Emacs

November 2021
Nov 25

SwiftUI Requires Platform Knowledge On Top. Case Study: Fonts

Nov 24

What Do You Get When You Drag and Drop a PNG File From Finder Into an NSTextView?

Nov 18

Don't Use Sparkle 2.x With Carthage

Nov 9

Use macOS System Selection Colors in LIN for Emacs Line-Selection UIs

October 2021
Oct 26

Swift Pattern Matching Operator: Compiler Error when Specifying Enum Type and Case Name?

Oct 7

Replacement for NSAppearance.performAs­Current­Drawing­Appearance on macOS 10.14 and 10.15 to Fetch the Correct NSColor.cgColor

September 2021
Sep 21

NSTextView Performance May Degrade for Large Plain Text Documents When usesFontPanel Is Active

August 2021
Aug 26

Retry Imperative Conditions with RxSwift Using a Delay

Aug 19

FastSpring Introduces Multi-Discount Coupon Codes

July 2021
Jul 18

How to Fix Mach-O Header Code 0x72613c21 When You Try to Export Your App in Xcode

Jul 17

Open Magit for Current Repository from the Terminal

Jul 12

Two Improvements to Open macOS Finder Window in Emacs Dired + Automator Quick Action Downloads

Jul 10

Open macOS Finder Window in Emacs Dired

Jul 10

NSTextView Bug: Automatically Scroll Insertion Point Into View Broken When Setting NSTextContainer's lineFragmentPadding to Zero

June 2021
Jun 23

TextKit 2 Introduces Block-Based Layout

Jun 21

Trash File from Emacs with Put-Back Enabled on macOS

Jun 18

I'm Thinking About the Gemini Protocol a Lot

Jun 15

How to Print on macOS With An NSTableView and Customize the Result

Jun 11

Single Function to Center Emacs Window on Screen

Jun 9

Multi-Monitor Compatible Code to Center Emacs Frames on Screen

Jun 4

Automatically Center New Emacs Windows (Aka Frames) on Screen

Jun 4

Does 'Open Source' Lack Proper Gate-Keeping?

May 2021
May 23

Use macOS Native Highlight Colors for Emacs hl-line

May 19

Notmuch Mail and Compatible Emacs Theme Updates

May 16

Indie Support Weeks: Monodraw

May 11

Using XCTUnwrap Instead of Guard in Unit Tests

May 4

FloatingFilter Gets Rounded Corners

April 2021
Apr 28

Adding a Wiki to the Site

Apr 10

Funding Open Source Software as a Third Party?

March 2021
Mar 17

The Archive 3rd Anniversary Giveaway

Mar 12

The Beauty of Hacking Swift: Make Union of Set Algebra Types More Obvious

Mar 11

MacSymbolicator: Tool to Symbolicate Your Crash Reports

Mar 9

Refactoring Case Change Code to Idiomatic Emacs Lisp

Mar 6

Change Case of Word at Point in Emacs, But for Real This Time

Mar 3

#CamelCaseHashtags Could Improve Accessibility

February 2021
Feb 24

How to Add Backlinks in Nanoc Static Site Generator

Feb 24

Backlinks Added to the Blog

Feb 18

Emacs Org-Mode: Automatic Item TODO/DOING/DONE State Transitions for Checkbox Changes

Feb 16

IPv6NAT in Unraid's Docker Containers Behind a Reverse Proxy to Make Outgoing IPv6 Requests Work

Feb 16

When Code Signing of Frameworks Fails During macOS App Distribution, Make Sure ENABLE_BITCODE=NO

Feb 15

SOLVED! Looking for Docker Reverse Proxy & IPv6 Setup Help (Paid)

Feb 10

Disable NSTextAttachment Action and Sharing Services Menu Drop-Down

Feb 10

Create Custom Org-Mode Links to Open My External Zettelkasten App

Feb 5

A Short Note on Voice Assistants and Very Old People Who Don't Hear Well

Looks like you cannot train a 91-y.o. woman to pick up voice assistants that rely on the recipient to understand the assistant's audio output.

Feb 2

Atkinson Hyperlegible Font May Be Pretty Good If Your Granny Can't See Well

My grandmother approves of Atkinson Hyperlegible free font for her phone book printout

January 2021
Jan 29

XCTestExpectation via NSPredicate Is On a Slow Interval, Use This Instead

Jan 19

WordCounter v1.6.4 Released

Jan 18

NSSavePanel Crashes on Big Sur for public.csv UTI When You Don't Have a CSV Editor

Jan 7

DuckDuckGo Site Search in Vanilla Forums Templates

2020

December 2020
Dec 29

Protesilaos Stavrou: Commend on Unix versus Emacs

Dec 27

Indie Support Weeks: Working Copy - Fully Featured iOS git Client

Dec 23

How to Profile Slow Scrolling (And Other Performance Bottlenecks) in Emacs

Dec 22

Uberabout Makes Your App's About Window More Sexy

Dec 20

Pulse to Highlight Yanked Text in Vanilla Emacs

Dec 20

Markdown Mode Fixes Imenu Tag Generator

Dec 16

Apple's App Store Small Business Program Enrollment Is Super Simple

November 2020
Nov 27

OpenMoji Support in emacs-emojify

Nov 18

Decorate NSGlyphStorage to Replace Glyphs On-the-Fly

Nov 17

TableFlip v1.3.0 Released

Nov 16

Upgrading to Sparkle 2.x Branch

The Sparkle 2.x release branch is working fine for production when you switch from the ui-separation-and-xpc branch and enable DSA signing of updates.

October 2020
Oct 30

Convert org-babel Markdown Blocks to HTML

Oct 29

Making Emacs Autosaving of Files Ignore Email Drafts

Oct 28

Zettelkasten Method Introduction

Oct 21

Hide Traffic Light Buttons in NSWindow Without Removing Resize Functionality

Oct 21

Shorten Emacs Yes-or-No Confirmation Dialogs

Oct 19

Follow Link at Insertion Point in NSTextView

Oct 17

Now Hiring: PHP/Laravel Web Developer

Oct 16

Export Day One (macOS) Journals to Emacs org-mode Diary Entries

Oct 9

Fix Your Damaged Mac App Store App by Parsing the App Store Receipt Dates Correctly

September 2020
Sep 21

NSRemindersUsageDescription Info.plist Key is Misspelled in the Documentation

August 2020
Aug 25

Indie Support Weeks: Use DropDMG to Create Your App Downloads

Aug 5

Make RVM's Ruby Available to Emacs Shell Commands

Aug 3

Get FastComments for a $79 One-Time Payment Instead of $50 Annual Subscription

July 2020
Jul 30

Add HTML Entity Picker to Emacs

Jul 30

Experimenting with a Switch from Disqus to FastComments

Jul 22

Demonstrate Swift's Lazy Initialization of Static Attributes Even when Using a Property Wrapper

Jul 3

Adopting the Linktree Convention to Redirect People to My Projects

June 2020
Jun 24

Implement Pixel-by-Tile Movement in Godot

Move a character on a tile-based grid and animate the steps in between in Godot, limiting its engine to distinct steps.

Jun 21

Comparing 2D Collision Detection and Hit-Testing Approaches in Godot 3

Jun 11

How to Decode Human-Readable JSON Strings to Integer-Based Swift.OptionSet

Jun 6

Patching console.log into Swift's JavaScriptCore JSContext

Jun 6

Add Subscripts to JavaScriptCore Types in Swift

Jun 5

TableFlip v1.2.3 Ships with CSV Fixes

Jun 4

h-now Aggregator Live Demo on Heroku

Jun 4

FSCheckoutSheet: In-App Purchase Sheet for Your FastSpring Store

Jun 4

Structure and Interpretation of Classic Mechanics – A Physics Book with Code

May 2020
May 28

Proposing the h-now Microformat to Mark-Up All Our /now Pages

May 19

Digital Gardening: A Renaissance of Open Thinking and Curated Writing on the Web

May 14

Blog Series: TableFlip's NSDocument File Type Issues and Fixes

May 14

Define and then Hide a New Document Type

May 14

How to Create a NSSavePanel accessoryView in Swift to Pick File Formats

May 13

Programmatically Select a NSSavePanel File Format to Fix Empty Selections

May 13

Sorting Out Overlapping File Types

May 12

Sandboxing and Declaring Related File Types

May 12

Observations of the Curious Problem of NSDocument-Based App Changing the File Extension

May 10

Natural Language Toolkit Word Counter

May 1

Delete the Next Word or the Current Selection in Emacs with the Same Shortcut

April 2020
Apr 9

Indie Support Weeks: beorg

Apr 3

Indie Support Weeks: Soulver

February 2020
Feb 29

Getting Rid of kCGImageSourceTypeIdentifierHint Error when Loading NSImage from a File

Feb 24

Now Hiring: Freelance Mac Dev

Feb 16

Auto-Growing NSTextField

Feb 6

Boilerplate to Add AppleScript to Your macOS App in 2020

Feb 5

NSProgress with KVO-based Finish Callbacks

Feb 1

WhatsNewKit v1.2.0 Supports Multiple Update Notices at Once

January 2020
Jan 27

Newsletter Form Fixed

Jan 24

Thread Safe Property and Resource Access with the Transaction Wrapper

Jan 23

Swift API Docs for String.index(_:offsetBy:limitedBy:) Is Still Misleading

Jan 22

MultiMarkdown Filter for nanoc

Jan 21

Lock App Features Behind a Paywall and Enforce the Lock in Code

Jan 18

Show Light Text on Dark Recessed NSButton with an Image

Jan 17

Whole Value Pattern

Jan 5

Maybe Call Your UI Configurion Objects ViewData Instead of ViewModel

Getting out of the MVVM mindset helps see the connection between UI and UI-specific state that you derive from your model.

Jan 3

AppMover Swift Library to Move Your macOS App to the Applications Folder

Jan 2

Community Trumps All

2019

December 2019
Dec 29

SwiftRex - Redux for Swift with Reactive Capabilities

Dec 29

Facilitate Non-Artists to Sketch

Dec 16

microsoft/PLCrashReporter v1.4.0 Released

Dec 14

Center Odd Shapes in Keynote Spin Animations

Dec 13

UserDefaults Access via Property Wrappers Is Worse Than You Might Think

Dec 11

Print Current Date and Time in Emacs Minibuffer

Dec 10

Guilherme Rambo Was Temporarily Locked Out of His Apple Developer Account

Dec 10

Split a Markdown File by Its Headings

Dec 7

Dash 5 Documentation Browser for Mac is Available

Dec 4

Native macOS Notifications for Emacs Org Tasks and Appointments

Dec 3

FourLayerArchitecture Is Still Under-Appreciated

November 2019
Nov 26

That Weird Obstable of Interface Builder When You Get Started With iOS Development

Nov 26

Black Friday Deals 2019

Nov 23

Working on the Zettelkasten Online Course

Nov 4

WordCounter v1.6 Brings Analytics to Your Productivity!

October 2019
Oct 26

X-Oriented Programming, Using Functions or Classes?

Oct 24

Win32 API Programming With Swift

Oct 24

ExactScan Leaves the Mac App Store

Oct 22

Reducing the Blog Post Email Digest To Once a Week

Oct 22

Model-View-Presenter, Form Validation, and a Unidirectional State Machine

Oct 21

Xcode Bug Turns Out To Be the Hardened Runtime Setting

Oct 19

Fix Missing Font Fallbacks for NSTextView

Oct 17

Building a Rich Domain In Iterations

Oct 14

Prevent Emacs Compilation Window From Displaying Other Content

Oct 14

Quit and Close Emacs Special Windows Like Help and Compilation Results

Oct 14

Emacs Settings for PHP Development

Oct 14

The Archive Update Hiatus Due to a Severe Bug in Xcode 11

Oct 13

Starting PHP Development in 2019: Project Setup and Dependencies

Oct 11

Making os_log public on macOS Catalina

Oct 11

Xcode 11 Displays Crash Logs in Context of Your Projects

Oct 10

Processing David Epstein: Range (S01E04)

Oct 8

Website Page Design Overhauled

Oct 7

"Make Money Outside the Mac App Store" Second Edition Ebook Available

Oct 6

Pros and Cons of the Mac App Store

Oct 6

Macoun 2019 Code Retreat Workshop Postmortem

Oct 3

Comparison of E-Commerce Platform Alternatives to the Mac App Store

Oct 2

Processing David Epstein: Range (S01E03)

September 2019
Sep 30

September App Updates

Sep 29

What to Do When You Want to Affect the Order of Subscription Callbacks in ReSwift

Sep 27

Processing David Epstein: Range (S01E02)

Sep 25

Add an Internet Access Policy to Your App

Sep 25

Calendar Paste v3.3.0 Hits the App Store

Sep 23

Always Ask for MailChimp Newsletter Reconfirmation Outside of MailChimp

Sep 23

Don't Wait. Show Up. Or It Might Be Too Late Again

When someone close to the family dies, a lot of dust is stirred up, offering an opportunity for reflection.

Sep 20

Processing a Book to Extract Notes, a Video

Sep 19

Make Money Outside the MAS v2 Book Writing Stage is Done

Sep 17

Newsletter Revival

Sep 17

TextMate v2.0 Was Released

Sep 14

State of the macOS Developer Platform Choices

Sep 14

Please Also Change Your Feed URL's Inside Your Apps

Sep 13

Redirect Your DevMate Sparkle Update Feeds Now

Sep 11

Fira Code 2 Released

Sep 11

I Am at Macoun 2019

Sep 10

Wireframe for Server-Side License Activation

Sep 9

Become an Acquired Taste

Sep 8

UINavigationController Inside a Popover

Sep 6

With DevMate Closing Shop, Here's What You Can Do

Don't panic. DevMate's components can be replaced, one by one. Here's a breakdown of it all.

Sep 6

Prying Open the Vanilla Forum Control Flow to Create Discussions in Embedded Forms

Sep 6

Detect When Your macOS App Has Been Moved During Runtime

Sep 4

Live FastSpring Store Examples

Sep 2

Looking for a Family Altar's Totem

August 2019
Aug 30

Book Updates Underway

Aug 7

Find Non-64-Bit Apps Using the Free Go64 Tool

Aug 7

The Archive v1.4.0 Released, Introducing Tabs

Aug 2

NiftyMenu -- Automatically Recreate a macOS App Menu Bar in HTML

July 2019
Jul 29

Empty NSWindow Title Invisible in Window List

Jul 29

Paid Up Front: Two Perspectives to Make this Business Model Work to Your Advantage

Jul 24

Variable Name Conventions in Tests

Jul 21

Implement NSWindow Tabbing with Multiple NSWindowControllers

Jul 20

The World's Most Comprehensive Guide to Implementing Programmatic Creation of Tabs in a Single NSWindowController That You Shouldn't Adhere To

Jul 17

How I Never Forget to Pack Stuff in My Backpack

Jul 8

Convert MS Word DOCX Files to Markdown with Images

Jul 3

Lightweight CrashReporter Library for Mac Released

Jul 3

Move! Work Break Timer v1.4.0 Released

Jul 2

Fixed Code Highlighting on the Blog

Jul 1

Find Out if Xcode/LLDB Debugger Is Attached to Current App

June 2019
Jun 29

Fold Current Level-1 Heading in Emacs Org-Mode Outlines

Jun 29

Combine E-Book for Free

Jun 28

Post Overview Updated

Jun 28

Slides for the "More Money, More Control" Webinar on Selling Outside the Mac App Store

Jun 28

Existing NSWindow Show Notifications Don't Work

Jun 28

TableFlip Mac App Store Experiment Stats: Sources

Jun 26

WordCounter for macOS Version 1.5.0 Released

Jun 26

Reference Xcode Configuration Variables in Objective-C

Jun 25

React to NSWindow Showing in Your App

Jun 22

Xcode Project Setup to Build, Embed, Codesign, Notarize, and Use the Sparkle XPC Services

Jun 22

How Do You Activate Sparkle's XPC Services?

Jun 21

How to Migrate to the New Sparkle Updater XPC Branch

Jun 20

Use Shared NSUserDefaults for XPC and Interface Builder Nibs

Jun 13

Imposing Bans and App Store Sanctions

Jun 12

Free Amazon S3 and CloudFront Hosting for Students

Jun 10

From bash to zsh on macOS

Jun 9

Browser-Like Navigation in The Archive

Jun 8

embetty Embeds Tweets and YouTube Videos Without the Tracking Code

May 2019
May 29

Python Context Manager Compared to Ruby DSLs

May 28

How to Add Files to mpd using python-mpd2

May 25

Emacs for Remote SSH Python Development

May 22

Mac App Store Proceeds for TableFlip Without Marketing Campaigns

May 14

Finding the Field Editor in UI Tests

May 11

Being Afraid to Change a Working App

May 10

TableFlip Is Now Available on the Mac App Store

May 9

Using Drag and Drop with NSTableView

April 2019
Apr 15

Hosting Downloads on Amazon S3 with CloudFront

Apr 15

Fixed the Blog Archive

March 2019
Mar 29

Sync Emacs Org Agenda Files via Dropbox Without Conflicts

Mar 25

Add Navigation Buttons to NSTouchBar

Mar 8

Replacing More Reference Objects with Value Types

Mar 7

Do Not Apply Code Heuristics When You Need a Broader Perspective

February 2019
Feb 23

Refactoring The Archive's ReSwift Underpinnings

Feb 5

Replace RxSwift View Model Types with Free Functions

January 2019
Jan 23

Programmatically Add Tabs to NSWindows without NSDocument

Jan 8

NSAppearance Change Notifications for Dark Mode and RxSwift Subscriptions

2018

December 2018
Dec 10

WordCounter v1.4.0 Released with Mojave in Mind

November 2018
Nov 29

Find Swift Classes from Objective-C Tests

Nov 23

Fix NSSegmentedControl Action Forwarding from Your NSToolbar

September 2018
Sep 28

Parse Boolean Search Expressions in Swift

Sep 20

Fixing Ruby ncurses Unicode Character Display on Linux Terminals

Sep 8

How to Fix fileReferenceURL() to Work with NSURL in Swift 3 and Swift 4

August 2018
Aug 25

React to Programmatic Changes to NSControl.state in RxCocoa

Aug 11

Remove Trailing Whitespace in TextMate 2 Code Files

July 2018
Jul 20

ReSwift Custom Diffs and Enqueued State Updates

Jul 17

Synchronize Scrolling of Two (or More) NSScrollViews

June 2018
Jun 23

NSTextField usesSingleLineMode Stops Working When You Implement NSTextViewDelegate Methods

Jun 16

Better Form Model Validation

Jun 14

Use RxSwift Observable Instead of Result for Failure Handling

Jun 9

Format Strings with Templates in Swift

Jun 6

Validate Temporary Form Models

Jun 5

Panic's New Pricing Model for Transmit on the Mac App Store

Jun 3

Programming Does Not Grow Up

May 2018
May 26

Add Blog Post Text Template Expansion to Emacs with Org Babel

May 25

Bye, Bye, Google Analytics

May 19

Indent Code and Lists by 4 Spaces in Emacs Markdown Mode

May 12

Move! Work Break Timer Update 1.3.0

May 9

Global TODO Capture Hotkey for Emacs Org Mode on macOS

April 2018
Apr 24

RxSwift: Typing/Idle Event Stream for NSTextView

Apr 19

Mac Developer Survey 2018

Apr 19

Broken Help Menu Breaks Rather Unpredictably

Apr 18

Plain Controllers to Ease the Burden of View Controllers

Apr 15

Put Test Files Next to Production Code for Better Discoverability?

Apr 14

High Sierra: Help Main Menu is Broken and Freezes Apps

March 2018
Mar 22

A Visually More Accessible Disabled NSColorWell

Mar 17

The Archive Is Available Now

Mar 7

NSTextView's Default Insertion Point and Selected Text Colors

Mar 6

Launch of My Next App, The Archive

Mar 4

How I Avoided Over-Architecting a Simple Event Handler with ReSwift, Cheating with Existing Reactive Code

February 2018
Feb 26

Behind the Scenes of Programming 'The Archive': How Much Coffee Did I Consume?

Feb 13

From Timing with Love: Valentine's Day Productivity App Discounts

Feb 6

NSTextView: When Did the Find Bar Disappear?

2017

December 2017
Dec 27

Exposing the MultiMarkdown 6 Library to Swift, Part 1: Swifty Enums

Dec 1

Month 13 Is Out Of Bounds

November 2017
Nov 29

Why the Selection Changes When You Do Syntax Highlighting in a NSTextView and What You Can Do About It

Nov 27

Blogs Merged Back Into One

October 2017
Oct 30

Dependency Injection via the Recent "Cake Pattern in Swift" Pattern is Useless in Practice

September 2017
Sep 30

Is the Mac mini (Mid 2011) a good developer device in 2017?

Sep 28

Inject ReSwift Middlewares from Different Project Targets During Runtime

August 2017
Aug 17

To Subscribe or not to Subscribe? Not!

Aug 9

Show a fat iOS-Style Insertion Point in NSTextView

Aug 4

How to Use NSGlyph in Swift

July 2017
Jul 15

Setting the NSTextView Line Height in a Beautiful Way

Jul 11

Typewriter Mode: Adding Overscrolling to the Text View

Jul 8

Scroll NSScrollView Programmatically Without Showing the Scroller Knobs

June 2017
Jun 28

macOS Storyboard Outlet-Like Connections Between View Controllers

Jun 18

NSSplitViewItem Vibrancy Is Not Added with Every Initializer

Jun 17

Fixing NSTableView Cell Backgrounds by Deactivating NSSplitViewItem's Visual Effects

Jun 10

ReSwift Niceties: The Current State Getter

Jun 10

Adding last(where:) in Swift

Jun 2

The 3 RxSwift Building Blocks of UI Components

May 2017
May 19

WebcamSnap Open Source Library Released

May 17

Do You Need to Use Action Creators in ReSwift to Conditional Action Dispatching? (No)

May 16

Adding RxSwift Ports to Resolve UI Inconsistencies

May 8

Sorting Markdown Tables by Column from the Shell

May 5

Week #18 of 2017 in Review

May 2

ReSwift v4 Released

May 2

Drawing Custom Alternating Row Backgrounds in NSTableViews with Swift

April 2017
Apr 30

Accessibility-Awareness Raising with a Super Mario Video

Apr 28

Week #17 of 2017 in Review

Apr 28

One Way to Solve Inexplicable Race Conditions in Tests

Apr 25

SwiftyBeaver: Record to Array

Apr 24

The Archive – Mac App Beta

Apr 24

Swift Protocols with Default Implementations as UI Mixins

Apr 20

Website Changes Imminent

Apr 10

Clean Cocoa Blog Redesign

Apr 9

FatSidebar View Component for macOS Released

March 2017
Mar 26

Non-Obvious Swift: Defer

Mar 3

Setting the Line Height of a NSTextView

Mar 1

How to Make ReSwift Actions Undoable with NSUndoManager

February 2017
Feb 23

Handle Pending File Changes with ReSwift as Your Backbone

Feb 17

Recording of Wednesday's Webinar

Feb 14

Make Money Outside the Mac App Store – Swift 3 Update

Feb 12

Register for My Webinar About Ditching the Mac App Store

Feb 11

Express Either–Or-Relationships as Enums

Feb 7

How to Unit Test Dispatching ReSwift Actions from RxSwift Observables

Feb 6

Core Data is Invasive. You Can Hide It, Or You Can Embrace It

January 2017
Jan 31

“Bugs are the edges of what works”

Jan 28

Better Swift FileManager File Existence Checks

Jan 27

Shopify's Ruby on Rails app statistics

Jan 26

Refactoring – Extract Objects Horizontally or Vertically

Jan 25

Framework Oriented Programming and It's Relation to OOP

Jan 19

A Look at the ReSwift Event Log During Launch of My Latest Project

Jan 17

How to Save File Changes Using ReSwift Actions

Jan 15

InfiniteCanvas – Vector Drawing App Concept

Jan 11

Swipe Transitions and ReSwift

2016

December 2016
Dec 19

Innocent Arrow Diagrams

Dec 12

Always Pay Attention to Implications of Technical Advice

Dec 3

Lifting Into a New Type: My first "Idiomatic" RxSwift Unit Test

Dec 1

It's the Worst Time to Go Open Source Because So Many Stupid People Will See It

November 2016
Nov 22

Open Source and the Open, Distributed Mindset

Nov 18

Dan Counsell's Mac App Store Wish List

Nov 13

RocketData is a Uni-Directional UI Component Data Source

Nov 12

Debugging NSBeep Error Sound in NSResponder Method Calls

Nov 8

BundleHunt Experiment

Nov 3

"Exploring Mac App Development Strategies" 4th Extended Edition Now Available

October 2016
Oct 27

Resolving NSTreeController's "Ambiguous use of 'children'" in Swift 3

Oct 16

Let Them Perish

Oct 15

Clean Swift aka VIP Architectural Approach

Oct 12

My Declarative Breakthrough: Wherein I Stop Thinking in Terms of Object Collaboration

Oct 11

How to Refactor Messy Apps for a New Architecture?

Oct 8

MVVM's Place in Your App

Oct 6

Developer Documentation App Dash Removed from App Store – and No-One Can Do a Thing

Oct 5

TableFlip Launches

Oct 4

Apple Introduces Search Ads

September 2016
Sep 27

Breaking NSLocale API Changes Revisited

Sep 25

Magic Numbers Represent Concepts

Sep 19

Swift 2.3 NSLocale UIKit API Changes Break iOS 8 Compatibility

Sep 19

On Proprietarity of File Formats

Sep 17

Comment On "Real World Flux Architecture on iOS"

Sep 10

TableFlip Will Be Released in October!

Sep 9

Tests Are Just Code, Too

Sep 3

Global State Was Preferred Because Typing Sucks

Sep 2

Programmer, Interrupted

August 2016
Aug 28

On Software Feedback

Aug 22

Assertions in Swift Kill Your Code

Aug 18

Switch VS Checkbox in User Interface Design

Aug 17

Putting ReSwift Actions on the Undo Stack Using Middleware

Aug 12

When You Code, You Design Both Structure and Information Flow

Aug 9

MVVM Is Quite Okay at What It Is Supposed to Do

Aug 5

Racing To the Top

Aug 3

Transparent NSTableView Headers

Aug 1

NSDocument Weirdness: Sheet Contents Appear Disabled

July 2016
Jul 31

Ownership of the Apps You Use: Ulysses App Pricing, Subscription Models, and the Death of Licenses?

Jul 29

On Reaching Mastery

Jul 28

What Projects Do You Identify With? Maybe They Drag You Down

Jul 26

Implementing CollectionType in Swift 2.x

Jul 22

Revamped Blog Archive

Jul 21

Splitting the View Models of TableFlip, a Short Aftermath

Jul 18

I'll Split Up the Monolithic View Model in TableFlip. Here's What I Expect to Happen

Jul 17

How PlanGrid uses a Flux-Inspired Architecture to Simplify State Management

Jul 15

TIL: How to Make NSTextView Reject Newlines

Jul 14

Iteratively Improving Your App: Decoupling Components at Module Seams and Adding Facades

Jul 13

First Contact with AppKit for iOS Developers (Under the Radar #26)

Jul 7

I love Swift's Expressiveness

Jul 3

UIStackView For Showing And Hiding User Interface Controls

Jul 2

Conflicting Mental Models in TableFlip's Interface Design

Jul 1

Separating ReSwift Actions from UI Events

June 2016
Jun 27

TableFlip Closed Beta Invitations

Jun 25

Check Boxes in AppKit

Jun 23

Location Matters

Jun 17

objc.io Books 30% Off

Jun 16

Disabling Segments in a NSSegmentedControl in a Toolbar

Jun 14

How to Create a Segmented NSToolbarItem like Apple Mail.app

Jun 12

Coding TableFlip: the Bigger Picture

Jun 9

Configuration Objects and the Then Microframework

Jun 6

Principles of Object-Oriented Design in Swift 2.2

May 2016
May 31

TIL You Can Cancel Enqueued GCD Blocks

May 26

Hustling

May 25

The Surprising Intricacies of Editing Parts of NSTableView

May 23

Custom Enumerated Sequences in Just 1 Line of Code

May 18

Evaluate and Launch Your Idea With Small Steps

May 15

Swift Depends on Objective-C

May 12

Outperforming the Competition

May 11

Better Sliding Menus

May 10

Calendar Paste 3 FREE this Week

May 9

How to Abort a Chain of Rake Tasks on Error

May 8

How to Get Started with Swift: Write New Tests in Swift

May 6

App Pricing and How to Make More Money

May 3

What I Did When I Found Emojis in Strings Always Lost the Last Byte

April 2016
Apr 28

Replacing Loops with Mapped Ranges

Apr 25

Type-Safe Storyboard Segues

Apr 14

Productivity Tips for Programmer Solopreneurs

Apr 12

The Power of Guard

Apr 11

How to Edit NSTableView Headers with a Double-Click

Apr 9

Refactoring to Clean Value Transformations in Swift

Apr 1

Use Xcode Deprecation Warnings to Refactor

March 2016
Mar 31

Currying and Treating Instance Methods as Curried Functions

Mar 29

The Swift Developer's Cookbook Review

Mar 25

5 Heuristics for "I have a complicated nested view controller setup. How do I handle passing data?"

Mar 24

Swift Selector Syntax Sugar

Mar 22

Book Updates for Swift 2.2

Mar 21

Translate Optional Delegate Protocol Methods to Swift Block-based Event Handlers Using Nested Objects

Mar 19

Blocks: Useful to Perform Actions In Context

Mar 18

VIPER by Experience: How to Set Up an iOS Project

Mar 16

How I Toggle or Switch 2 NSMenuItems from the Main Menu

Mar 14

Extend View Controllers with Behavior Objects Right from Within Interface Builder

Mar 12

Creating a Cheap Protocol-Oriented Copy of SequenceType (with a Twist!)

Mar 11

Announcing TableFlip

Mar 10

How to Create Fixture Files for Unit Tests

Mar 8

Creating a Lens for an Object to Provide a New Public Interface

February 2016
Feb 28

A Vacation Week – 20% Discount While I'm Away!

Feb 28

Reusable View Components from Nibs

Feb 27

Featherweight Router

Feb 27

Now

Feb 26

Import Parts of a Module

Feb 25

Ignoring UILocalNotifications When the App is Running

Feb 24

rethrows in Swift

Feb 22

MVC on iOS Done Right

Feb 19

My Desk 2016

Feb 18

How do You Really Mock Objects You Don't Own? You Replace Them with Adapters

Feb 16

DevMate is Completely Free Now

Feb 15

Piezo Exits the Mac App Store

Feb 15

Information Flow and Stateful Buttons

Feb 15

Uni-Directional Flow of Information with Realm

Feb 11

Publish and Subscribe — Decoupling Deep View Hierarchies from Event Handlers

Feb 8

Inline Blocks as Result-Producing Helpers

Feb 5

Extract Private Functions as Collaborators

Feb 4

Symmetry

Feb 3

1 Criterion to Determine if You Should Write Unit or UI Automation Tests

Feb 1

Always Write Functions to Cope with all Possible Parameter Values

January 2016
Jan 30

Use and Misuse of Helper Functions

Jan 29

Block-Based API vs. Delegates – a Comparison

Jan 27

Make Money Outside the Mac App Store now Available on Amazon

Jan 26

Move! Review at Softpedia

Jan 26

Mind Node adds Tasks

Jan 23

Flow Controllers to Replace Segue-based View Transitions

Jan 22

ReSwift, Law of Demeter, and Another Level of Indirection

Jan 21

Events as Declarative State

Jan 21

Extending Types with a Conversion Factory: Where Should You Put It?

Jan 18

I'll be writing a Word Counter Swift module fully East-Oriented

Jan 16

How to Couple UITableView Cell Identifiers and View Models

Jan 15

Separating State from State Changes

Jan 11

How Closures are a Better Event Handler Protocol Alternative

Jan 7

iRamDisk May Speed Up Your Xcode Compilation Times

Jan 4

Get Your App Indexed by Google

2015

December 2015
Dec 29

Making Cocoa the Outermost Layer

Dec 23

Encapsulate a Process in a Single Line Using Bind and Good OO Design

Dec 21

Segues: How to Use Them While Saving Lines of Code

Dec 19

Separate Read Model from Write Model to Support Complex Forms

Dec 14

iOS View Architectures and VIPER Explained

Dec 11

Make Money Outside the Mac App Store

Dec 10

Yelp's Modular UITableViews

Dec 4

Extract UITableView Contents and Configuration Into Helpers

November 2015
Nov 28

Configuration Objects: Delegate Initialization to a Parameter

Nov 26

Parameter Objects Simplify Your API Versions

Nov 25

Presenter and MVVM for UITableViews?

Nov 23

How to Handle Errors When You're Not Interested in the Details

Nov 20

Switching iOS App Login Methods by Creating Your Own Simple Login Module

Nov 17

Tips to Conquer Massive View Controllers

Nov 13

Ruby 2.3 Will Have Optional Chaining

Nov 13

Jiggle GCD Queues to Find Problems

Nov 11

Modeling: From Structured Data Representation to Problem Domain

Nov 4

Swift OS X Programming for Absolute Beginners Review

Nov 3

Core Data Calls Them Contexts for a Reason

Nov 3

Ideas to Solve Background Fetching and Saving Race Conditions with Core Data

Nov 2

Productive Writer's Bundle Sale

October 2015
Oct 31

What It Means to Domain-Drive Your Design

Oct 29

Word Counter Now with File Monitoring

Oct 28

Don't Build on El Capitan Without Checking App Transport Security

Oct 26

NSOpenPanel's and NSSavePanel's Block-Based API is Superior

Oct 24

Small Helper Objects Take You Far

Oct 23

How I Solve the Unexpected Error Handling User Experience Problem

Oct 20

Make Custom Debug Build Configurations Play Nicely With CocoaPods

Oct 17

Optional Protocol Methods in Swift using Closures and No Protocol, Actually

Oct 16

Achieve More with a Variety of Value Objects in Swift

Oct 14

Decouple UI from Model with View Models and Controls

Oct 13

How to Move Bootstrapping Code Out of AppDelegate

Oct 12

Transactions and Rolling Back Changes in Core Data with UnitOfWork

Oct 10

Leave a Rating for Move! app on MacUpdate

Oct 9

Put Usage of a CoreDataFetchRequest out of Your Code and Into ... Where Exactly?

Oct 8

Revisiting the Core Data + Domain Model Architecture

Oct 6

Expressive Domain Model, Core Data, and You

Oct 3

Chaining Events, Take One

Oct 2

How I Now Deal with Collapsible Split View Controllers on the iPhone 6

September 2015
Sep 29

Universal Deep Linking on iOS: Design Each Scene to Be Remarkable

Sep 28

Move! – Work Break Timer Now Ready for El Capitan

Sep 26

Swift Protocol Extensions as Mixins – And How Do You Test That?

Sep 24

Testing Shorthand: Use a Subclass of the Real Object Under Test

Sep 24

Make Money with Mac Apps Outside the MAS: E-Book Prerelease, Need Feedback

Sep 22

Using Guard in Unit Tests

Sep 19

Save Yourself Casting Headaches with a Generic Fetch Request Object

Sep 16

How to Change the Detail of a UISplitViewController in the Background

Sep 14

Dismissing a Modally Presented Scene on Both iPad and iPhones Using Unwind Segues

Sep 10

Weird EXC_BAD_ACCESS in Swift 1.2 Was Due to A Compiler Bug

Sep 7

How to Create Flexible Components with Two Levels of Service Objects

Sep 5

What is CLEAN Code?

Sep 4

Move! – Work Break Timer Release

Sep 2

Where Instead of Using Functional Bind, I Create an Expressive Model

August 2015
Aug 29

Create UML Diagrams Quickly with Draw.io

Aug 24

Cut-Out Animation of a Table View Cell Into the Next Scene

Aug 8

From East-Oriented Programming to Functional Bind

Aug 4

How to Write Pragmatic, Testable Singletons in Swift

July 2015
Jul 29

Refactoring Legacy Code: Replace Free Function in Tests, Even Swift's Own Functions

Jul 28

Support the Word Counter With a Review

Jul 28

Library for Providing Static UITableView Contents in Swift

Jul 20

“Exploring Mac App Development” Updated for Swift 2.0 + Coupon to Save 50%

Jul 18

How Coursera Uses VIPER to Architect Transitions Between App Features

Jul 18

Refactoring a View Controller for Clean Information Flow

Jul 10

Using Blocks to Realize the Strategy Pattern

Jul 8

Clean Coding is a Programming Misnomer for a Software Engineering Principle

Jul 8

How I prepare Calendar Paste E-Mail Pitches

June 2015
Jun 24

Protocol Madness: Comparing Apples to Oranges from the Vantage Point of Fruit

Jun 23

How to Write Unit Tests for Storyboard-based Buttons in Swift

Jun 22

Using Swift Enums to deal with Storyboard Segues

Jun 19

So I've finished my model, now what?

Jun 13

Freemium won't solve your problems magically

Jun 11

Generics in Objective-C

Jun 10

Be Cautious with Try-Catch for error handling in Swift 2.0

Jun 5

Test doubles for Core Data managed objects might not work as expected

Jun 3

State of Mocking in Swift Tests

May 2015
May 28

This is probably the nicest Swift Result enum ever

May 13

Observing Enums in Swift 1.2 with KVO

May 7

Combining Collection-Like Repositories and East-Oriented Code

May 3

Calendar Paste 2.2.0 Release Is Out

April 2015
Apr 25

Swift Extensions and Information Hiding

Apr 17

Success and Error Callbacks in Objective-C: a Refactoring

Apr 16

Return Types can Capture Async Processes and Failures

Apr 14

Book Updates for Swift 1.2

Apr 11

Functional Programming in Swift (YouTube Videos)

Apr 10

Event Publisher Revision 1

March 2015
Mar 31

Painless Event Delivery With a Custom Publish-Subscribe Infrastructure

Mar 25

Save Your Butt in Unit Tests With Shallow Reaching

Mar 16

Zettelkasten Posts Moved

Mar 13

VIPER iOS App Architecture Approach

Mar 11

3 Ways to Model Relationships in a Domain

Mar 6

Split Commands and Informational Return Values Apart Using Events

Mar 1

Going Beyond Guard Clauses in Swift

February 2015
Feb 22

Plug-in a UITextView Placeholder Label Extension

Feb 13

Functional Error Handling in Swift Without Exceptions

Feb 9

Use Double-Dispatch and Polymorphism to Get Rid of Conditionals

Feb 5

Crafting Wicked Domain Models by Jimmy Bogard

Feb 4

Thinking in Terms of Functional Programming Encourages Clean Factoring of Code

January 2015
Jan 29

How John Sonmez Helped Me Streamline This Blog

Jan 24

How to Resolve Word Counter Update Issues

Jan 23

Model–View–View Model (MVVM) Primer

Jan 17

Getting XPC to a Helper App Working with Sandboxing Enabled

Jan 6

Subscribe to My New Mailing List

Jan 2

Storyboard Segues VS Tell Don't Ask Principle

2014

December 2014
Dec 19

Model-View-View Model in Swift

Dec 18

Making Good Use of Singletons in Refactoring the iOS App Calendar Paste

Dec 13

Calendar Paste 2 is now Open Source

Dec 9

DEVONthink and Zettelkasten

Dec 8

“Exploring Mac App Development Strategies” Released!

Dec 2

I'm About to Release a Little E-book on Domain-Driven Design and Mac Application Development

November 2014
Nov 23

Idea Indexes of Books Flickr Group

Nov 13

Core Data Violates DDD Principles by Default

Nov 5

The Word Counter, NaNoWriMo, and You

October 2014
Oct 31

How I Edited my Last Zettelkasten Post and Came up With Something Even Shorter Than the Post Itself

Oct 24

Making the Word Counter More Useful

Oct 17

gitlogger updated to deal with UTF-8

Oct 2

Summer Knowledge Challenge 2014

September 2014
Sep 30

How I Prepare to Work on a Research and Writing Project

Sep 22

Introducing Myself on Zettelkasten.de

Sep 19

New Zettelkasten Blog Is Now Open

Sep 11

Self-Fulfillment and Growing Up

August 2014
Aug 27

Composing and Revising – The Two Modes of Writing

Aug 14

Word Counter v1.1.0 – Now With Daily Usage Statistics

July 2014
Jul 31

Challenge: Apply the Knowledge Cycle to Reading a Single Book

Jul 27

Feed for All Zettelkasten Posts

Jul 25

New Article Overview

Jul 17

Use a Short Knowledge Cycle to Keep Your Cool

Jul 12

Edit HTML with TextEdit for Mac

Jul 7

Word Counter (Mac) is Available Right Now!

Jul 3

Make Writing a Part of Your Identity

June 2014
Jun 25

How to Track Your Writing Progress

Jun 18

Include Images in nvALT for a Multi-Media Zettelkasten Experience

Jun 16

Developing a Word Counter for Mac – Apply as a Tester

Jun 7

Tapping Test app released

Jun 5

Calendar Paste v2.1.0 released

May 2014
May 24

How I use Outlines to Write Any Text

May 16

Building Blocks of a Zettelkasten

May 3

The Zettelkasten Platform – 2 Ways You Can Contribute

April 2014
Apr 22

SlipBox (Mac) Note Archive Review

Apr 11

Lessons Learned from Losing All Routine

Apr 4

Using nvALT as a Zettel Note Archive

March 2014
Mar 29

Baseline for Zettelkasten Software Reviews

Mar 20

The Need to Craft

Mar 14

Calendar Paste 2.0 – the iOS 7 Update

Mar 9

Reading Habits: Putting It All Together

February 2014
Feb 27

You Only Find What You Have Identified

Feb 21

Learn Faster by Writing Zettel Notes

Feb 15

Editorially is Shutting Down. What About Alternatives?

Feb 14

Note-Taking when Reading the Web and RSS

Feb 6

Count Your Words to Increase Your Productivity

January 2014
Jan 23

Looking for Alpha Testers

Jan 20

The Collector’s Fallacy

2013

December 2013
Dec 11

How to Make Daily Writing Practice Useful

November 2013
Nov 27

I Enabled Comments for Some Posts

Nov 26

Preparing Fragments Helps You to Ease Into Writing

Nov 8

Extend Your Mind and Memory With a Zettelkasten

October 2013
Oct 18

Announcing a Zettelkasten Info Product

Oct 7

Manage Citations for a Zettelkasten

September 2013
Sep 22

Solve database mapping problems and the impedance problem of ActiveRecord

Sep 15

Ruby RSpec/Guard/Spork Project Boilerplate

Sep 3

Create Zettel from Reading Notes

Sep 2

Unlock 802.1X wired internet via OpenWRT on TP-Link WA901ND

August 2013
Aug 10

Making Proper Marks in Books

June 2013
Jun 20

Create a Zettelkasten for your Notes to Improve Thinking and Writing

Jun 13

gitlogger Improved

Jun 6

Generate interactive documentation with Code Guide

May 2013
May 1

My Workspace

April 2013
Apr 24

Prototypes for Calendar Paste

Apr 24

Calendar Paste.app development notes (Series)

Apr 21

Outlining and Plain Text

March 2013
Mar 29

Rails.js XHR form callbacks fixed for invalid submissions

Mar 28

Sales and AppLaunch.us experience for Calendar Paste

Mar 20

Birthday of my deceased baby brother

February 2013
Feb 23

CriticMarkup and a TextMate Bundle

January 2013
Jan 12

Interlude: first month of app sales

2012

December 2012
Dec 30

App Sales and Hourly Earnings Calculated

Dec 30

Parsing YAML Frontmatter in Ruby

Dec 22

Nanoc3 Boilerplate

Dec 18

Interactive Guide to Blog Typography

Dec 14

Link Love: practicallyefficient.com

Dec 13

Calendar Paste release

November 2012
Nov 19

Remove Objective-C method declaration fluff with Keyboard Maestro

September 2012
Sep 19

iOS Project coming soon

2011

April 2011
Apr 18

nvALT review

February 2011
Feb 4

MultiMarkdown 3.0b1

2010

December 2010
Dec 12

Awesome new Notational Velocity

November 2010
Nov 4

Bringing Notational Velocity to a new level of massive text editing

October 2010
Oct 24

Multi-Markup Notational Velocity

Oct 15

How did Steve add Markdown to Notational Velocity?

Oct 13

Too many Notational Velocity forks?

Oct 12

Notational Velocity fork with fullscreen mode, menubar app, and more

Oct 10

Markdown HUD for Notational Velocity

Oct 6

Markdown Preview for Notational Velocity

Oct 5

Introducing MultiMarkdown Notational Velocity