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


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


December 2022
Dec 29 How to Use SF Symbols in Emacs (for Tab Numbers)
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
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 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
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


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
Feb 2 Atkinson Hyperlegible Font May Be Pretty Good If Your Granny Can't See Well
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


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
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
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
Jan 3 AppMover Swift Library to Move Your macOS App to the Applications Folder
Jan 2 Community Trumps All


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
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
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


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?


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


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 Books 30% Off
Jun 16 Disabling Segments in a NSSegmentedControl in a Toolbar
Jun 14 How to Create a Segmented NSToolbarItem like Apple
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


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
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


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
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


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 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 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


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:
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


April 2011
Apr 18 nvALT review
February 2011
Feb 4 MultiMarkdown 3.0b1


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