All blogs / Dev tools / editors / IDEs
Worklog: Articles and Blog Posts by Christian Tietze
Christian Tietze builds Mac apps for writers and thinkers (The Archive, TableFlip, Infinite Canvas) and writes about how programmers learn and think: Swift and AppKit, the Zettelkasten method, Emacs, and AI-assisted work.
Dev tools / editors / IDEsMobile / iOS / AndroidSoftware / engineering practice
- Posts
- 935 from 1 Oct 2010 to 7 Oct 2026
- Posting
- weekly (35 in the last year)
- Kind
- personal blog
- Feed
- https://christiantietze.de/feed.atom
2026 28
- How Do You Design a Code Retreat in 2026?
- Watch My EmacsConf Talk: Zettelkasten for Regular Emacs Hackers
- Mastery is a Wicked Problem
- Hazel Turns 20
- Lettera: A Refined Markdown Document Editor
- Retelling Stories with Commit Diffs in My Head
- Swift Blog Carnival Roundup: Tiny Languages
- CLI for Your Notes in The Archive – Automated Zettelkasten (Usage) for Programmers
- Counter Drift and Entropy with Kaizen
- Swift Blog Carnival: Tiny Languages
- Emacs Mistakes and Misconceptions That Held Me Back in 2019
- Peloton for the Mind
- Does Bad Code in Your Context Window Misalign LLM Recommendations?
- Make the pi Coding Agent Identify the Model in Commits
- Identify Codex CLI Git Commits for an Audit Trail
- FreeBSDKit: Swift Package to Write Capability-Aware FreeBSD Apps
- Zettelkasten Productivity: Books Written per Books Ingested
- Media Transfer Protocol Tools
- Emacs Complete: Feedback Loops in Emacs, Feedback Loops in Computing
- Institutional Knowledge Is a River That Can Dry Up (Don’t Fire All Your Workers)
- Introducing quake-frame.el: My Take on a Terminal Visor, But Running Emacs
- Xcode 26 LLM Markdown Summaries Are Actually Useful for Humans
- Zettelkasten for Programmers: Documenting Confusing with Swift.SendableMetatype
- Use clang API notes to Annotate C Header Files for Swifty Module Imports
- Auto-Mount Metal Toolchain Using a Launch Service Because Xcode 26 Cannot
- Manually Mount the Metal Toolchain When Xcode Cannot
- Emacs Carnival 2026-01: “This Year, I’ll ...”
- Announcing the German Urban Sketchers Index
2025 64
- The People Who Got Me into Emacs
- How a (Wooden) Wood Plane Planes Wood
- Join the All-Virtual EmacsConf December 6 and 7 and Check out My Zettelkasten Talk
- Rsync File Copying from Dired with Transient Menu
- What’s a Zettelkasten Good for in the Age of Affordable LLM’s?
- Be Honest When Claude Code Writes Your Software
- Learning About Swift Concurrency (from Matt Massicotte’s Blog) with a Zettelkasten
- Sharpening the Saw with Emacs
- Zettelkasten for Programmers: Pick a Title. It’s Okay to Change Later
- Redirect Output to Buffers from Emacs Eshell
- Protesilaos Stavrou Asks (Me) About Indie Development, Art, Philosophy, Zettelkasten
- Zettelkasten for Programmers: Processing Swift Actor Usage Advice in Depth
- You Don’t Need to Remember Anything Meets LLM Fans
- Clickable Swift Testing Failure Messages in Emacs compile-mode
- Infinite Canvas – iOS and macOS Whiteboarding and Sketching App, Now Available
- Emacs Elevator Pitch (August Blog Carnival)
- Adapt Unidirectional Flow Virtues to Your Plain SwiftUI App
- SwiftUI DocumentGroups Are Terribly Limited
- Announcing InfiniteCanvas, a Delightful Whiteboarding App for Mac, iPad, iPhone: TestFlight Is Now Open
- TextIndex: a Markdown Pre-Processor and Syntax Extension for End-of-Book Indexes
- Can You Really Put on Blinders If You Know There May Be Adverse Effects of Your Actions?
- Migrating from asdf to mise (en place)
- Emacs on Second Try
- Getting Over Frustratingly New Topics (Swift Concurrency) with a Zettelkasten
- How Many Zettelkästen Should You Have?
- Emacs Carnival 2025-06: Take Two
- My Procedure to Create New Zettelkasten Notes Inline
- No Open Office Hour On May 27th
- Microsoft Recall and Signal: When You Don't Worry About 3rd But 1st Party Spy Software
- Insert Cc and Bcc Mail Headers Conditionally in Emacs message-mode
- New Era of Small Software Shops
- The Inlined Agile Software Craftsmanship Manifesto
- Xogot, Godot 4.4 for iPad, Just Dropped
- Variadic Types in Swift and How to Count Them
- Cloudflare Tunnel via Docker with SWAG Nginx Reverse Proxy using Subdomains in Proxy Network on Unraid
- My Current Compilation Window Display Settings in Emacs via display-buffer-alist
- Start of a Zettel: Modern UICollectionView
- Master Software Crafters Let the Workpiece Be
- Introducing Markdown Babel: a Universal Tool to Make Markdown Files Executable
- Calling Swift Library Functions from C
- Keep .org File Outline Items Sorted Alphabetically
- Test, Save, and Execute HTTP Requests with Hurl (or restclient.el)
- Community Debt
- Each Failed Project Has Failed in Its Own Way – Anna Karenina Principle of Software Failure
- The Limits of swift-markdown Customization
- Open Office Hours (Daylight Saving Time): Tuesdays, 18:30 CEST (That’s 1 Hour Late)
- Working with Process Pipe and Its 64KiB Limit
- NSPopover in NSTextView With Links Is Broken: Accessibility Hierarchy Slowdown
- NSFileWrapper Sometimes Changes Modification Date to the Past
- NSTextView Bypasses performKeyEquivalent Check for Backspace and Option-Backspace
- Comparing Use of AI vs Learning to Code Has Nothing to Do With Knowledge
- Preview Mass Text Replacements with Emacs 30.1 replace-regexp-as-diff
- Ethan Marcotte, the Luxury of Job Choice, and Principles
- Important Things Are Never Just Done
- Leverage (to Influence Apple)
- Atkinson Hyperlegible Font Next and Mono
- Guilt-Free for the First Time. Burkeman’s “Meditations for Mortals”
- Staring In My Face, But I Ain’t Looking: Simplifying RxSwift Subscriptions
- Sins of Carthage: RxSwift Re-Entrancy, Undetected
- Using 2 Editors Because Xcode Is Dumb
- Responsive, Scalable Hamburger Menu in Accessible CSS
- Free SwiftUI University Course fro -Boston College Professor
- Open Office Hours: Tuesdays, 17:30 CET
- RxOmnibar
2024 74
- “Find My” Python and Swift Libraries
- Apple Music App: Android APK Direct Download
- Gus Continues to Work on Acorn
- Org-Mode Emphasis Keymap with Mnemonics
- Swift Concurrency Provides Compile-Time Feedback for Runtime Behavior
- Global Day of Code Retreat 2024 Retrospective
- Iterating Through Realities
- Pi-hole on Unraid (as Local DNS to Access NAS Services Without a Roundtrip to Cloudflare)
- TableFlip v1.7.0 Releases with Modern Icons
- Percent-Encode HTML Form Values so That Spaces Become ‘%20’ Instead of ‘+’
- Running Unsigned Applications on macOS Sequoia
- Composition Over Inheritance in NSViews
- Alex Ozun: Type-Driven Design with Swift (SwiftCraft 2024)
- Checklists Appreciated Under Stress
- Typed Filters and callAsFunction
- Fairphone Fairbuds Are a Great Idea (Only)
- Expecting a Child
- Pretty-Printing Variables, Objects, and Functions in JavaScriptCore
- PSA: SwiftUI Button Click-Through Fixed in macOS 15
- It’s Never Just a Something
- Logical Ranges and Character Ranges
- Embark: Display Buffer in Dedicated Side Window
- Create Journal Note For a Previous Day in denote.el
- MacMenuBar – Directory of Hundreds of Menu Bar Apps
- The Rake and Its Prongs
- The Communication Tradeoff
- If You Use KOMA-Script, Really Do Use KOMA-Script
- Fold Search Results Away in rg.el
- Declarative Text Kit: Word Ranges
- Hide macOS Menu Bar Icons (Bartender Alternatives)
- Declarative Text Kit: Token-Based Adapters
- Declarative Text Kit: Reduction in Ugly Code Size
- Declarative Text Kit: Expression and Evaluation
- Swift Package: FastSpring In-App Purchase
- Declarative Text Kit: Inserting Strings and Lines With a Result Builder
- It's Easier With Meaning
- Declarative Text Kit: Sketch of an API
- Use and Then Reduce Open Source Dependencies
- Zettelkasten (Not) Needed?
- Table View Cells from Nib: How to Change the Blueprint Data to Affect New Cells
- Dynamic Actor Isolation Can Help During the Transitional Phase
- Niki Tonsky: Hardest Problem in Computer Science: Centering Things
- A-B-C: Always Be Changing Existing Code
- SwiftUI Kata: Recreating DebugInfo Viewer
- Enable SwiftUI Button Click-Through for Inactive Windows on macOS
- “Soulslike”
- Masterclass of Decoupling: Diablo II Resurrected
- Negate KeyPath<T, Bool> Values with not()
- Disable XeLaTeX Character Sequence Mappings for Inverted Question Mark and Inverted Exclamation Mark
- You Absolutely (Do Not) Need to Comment Your Code
- Ship Custom Fonts within a Swift Package
- Easing Into a Language and Environment: Week 3 with PHP
- Oh, You're Making Apps, So You Are Working for Apple/Google/...?
- SwiftUI Challenge: Can You Port this from Auto Layout to SwiftUI?
- 3 Types of FastSpring Storefronts
- How to Disallow GPTBot Crawling in robots.txt
- Developer Voices on Property-Based Testing Made Me Realize PBT’s Value
- TableFlip v1.6.0: JSON Support and Font Resizing
- Portable Every-Day-Carry Paper Kanban
- Splitting Large Tasks is not a Mathematical Process
- SwiftUI Field Guide
- Looking for Testers: Typers of Japanese, Chinese, and Korean Characters
- Example of Object Tag vs Topic Tag in Programming Zettelkasten
- When Actions of NSSegmentedControl in Toolbars Do Not Fire In Their Overflow Menu Item State, Do This
- Timestamps with Weekdays
- Life Hack: Label Your Trash Bins
- 32-Bit Cafe: Personal Website Ideas
- Low App Prices are Preemptive Excuses
- Have You Ever Sent an Email with a File Attachment that is Located on a Server?
- Transformative Reading ... 2017 Edition?!
- ChatGPT Shell: Confirm Before Closing and Split Compose Buffer
- Emacs sqlite-mode to Open .sqlite Files Automatically
- Cold-Blooded vs Warm-Blooded Software
- You Can Choose When You Live in Surplus
2023 54
- Show Organic Traffic in TelemetryDeck the Simple Way with a Values Breakdown Insight
- Using Type Markers for 'is' Type Predicates to Cover Generic Types
- Dependency Injection via Protocol Composition
- Update for modus-themes v4 and mlscroll.el Colors
- Ignore Generated Xcode .xcworkspace Files in Git Except Package.resolved
- Show Referrers in TelemetryDeck for Web with a TopN TQL Query
- TableFlip v1.5.1
- Transforming JSON to Tables: the Impedance Problem
- How Long Does a Disk Preclear in Unraid Take for 12TB of Data?
- Embracing the AppKit Ways
- Not Quite 100% SwiftUI – Time Makes Perfect
- TableFlip v1.5.0 Released
- Sparkle v2.5 Adds Relevant Version Highlighting to Release Notes
- Portable Painter Micro Palette
- UserDefaults.register(defaults:) Is a Bit Like Nil-Coalescing
- Year 36, a 🎂 Retrospective
- Kill Unsaved Emacs Buffers UX: Replacing Yes/No/Save with Meaningful Options
- The Missing Array.appending(contentsOf:)
- Making Your App Extensible with JavaScriptCore: Annotated Presentation with Full Transcript
- SwiftData: Store Image Data, but Actually Outside the Database
- Async XCTest Assertion Helpers
- Cocoa AppKit Responder Chain
- SwiftUI.View Is Your ViewModel
- Decoupling SwiftUI.View Configuration from Layout and Action Handling
- Inverted E-Mail Blockquotes
- Super Saturday Sharefest: Matt Massicotte's XPC Work
- WordCounter v1.6.6 Released
- macOS Sonoma Menu Section Headers Look a Bit Off
- Swift Package Import in Objective-C Might Just Work
- SwiftUI.List with Menu with Plain Button Style Breaks Event Loop
- How to Inspect SwiftUI.TextField.onSubmit and Figure Out You Can't Programmatically Use It
- Swift Pattern Matching with Extra Conditions, and the Value of Syntax Summaries
- 11 or so Android Ebook Reader Apps for Academic Writing Workflows: Annotations are Hard
- BOOX Vector PDFs Are Already Colored
- Colorize Onyx BOOX Notes Vector PDFs (Really Rough Edition)
- Boox NeoReader Annotation Export Is Meh
- Safari URL Scheme for macOS and iOS
- Detach Xcode Console -- via Terminal
- Wrap HTML Tables in Figures using Nanoc and Kramdown
- Website Rank in Common Crawl's C4 AI Dataset
- Fetch Personalized Command Explanations with 'um' from Your Terminal
- Create FastMail Masked Email Addresses with maskedemail-cli
- VIPER Added to the Wiki
- Copilot for Xcode Works Okay
- TableFlip v1.4.1 Released
- PSA: FileManager.trashItem (Maybe) Uses NSFileCoordinator Under the Hood Automatically, So You Shouldn't to Prevent Deadlocks
- Xcode Requires A Lot of Data for Swift Package Resolution
- Getting to Know Jetpack Compose by Comparing Concepts with SwiftUI (Markus Müller's CocoaHeads Leipzig Presentation)
- Dictionary.init to Make Use of Swift.Identifiable
- The Difference between Entity and Value Object, and How They Relate to Swift's Identifiable and Equatable Protocols
- woolsweater's SF Symbols Modeline
- Use San Francisco Font for SF Symbols Everywhere in Emacs
- Display a Random Inspiring Quote for Journaling or Shell Prompts
- Migrating to modus-themes v4 and Going Through the Changes
2022 72
- How to Use SF Symbols in Emacs (for Tab Numbers)
- Better org-mode Agenda display-buffer-alist Settings
- Making Your App Extensible with JavaScriptCore (CocoaHeads Presentation)
- Manage Org Agenda-Related Buffers via display-buffer-alist
- ChatGPT: Publish NSTextView Changes to ReSwift, but Also Use a Lamport Clock
- Dec 3 and Dec 4: EmacsConf 2022 Live
- Use System File Open Dialog for File Actions in Emacs (Just Once!)
- CocoaHeads Talk about JavaScriptCore Plugins on Thursday 2022-11-24, 7 p.m.
- Mutating Struct and State Observers: How the Latter Will Be Notified Even for 'No-Ops'
- Wiki Updates for Nov 29th
- Org-Mode Outline Levels 9+
- Gitea Ltd. Takes Over Gitea Open Source Project, Community Pushes Back
- Smooth Scrolling in a Table View for Custom Shortcuts
- There Could Be No “Later”
- NSTableView Variable Row Heights Broken on macOS Ventura 13.0
- macOS Ventura App Compatibility
- Sketch Employees for Hire
- Sketch Layoff of 80 Employees — Does It Really Send an Alarming Signal?
- 10 Year Indieversary AMA Postmortem
- NSTextView (Plain Text) and the Pasteboard: PasteboardType.string Is Not Handled
- Overview of Attribute Fixing in NSTextStorage
- 'Black Box' Unifies Software Modeling in Modules
- Example of High Cohesion and Low Coupling with Presenter, View, and View Model
- How to Fix When Some Text Changes Don't Come with Automatic Undo?
- Reactive Code is Sequentially Cohesive
- Delete to Beginning of Line in Emacs to Rewrite Code
- Replacing zoom-window with winner-mode to Temporarily Change Window Splits in Emacs
- 10 Year Indieversary: AMA On Sep 6th
- Wiki and Website Updates
- SwiftUI Isn't Easy to Get Into: My Road From Headache Towards Mastery
- Drawing Studies: Tonal Values
- Rely on @Published Property Wrapper Events, Not the Observed Object
- Schedule End of the Work Day Using Org
- Output Port Adapter for Single Point of Configuration in Complex UI
- Emacs Blogging: Insert Tag from YAML Frontmatter Posts
- Disambiguate Code Signing Identities
- New Library Pages
- TDD Is About Writing Counter-Factual Statements
- Key Binding to Select Paragraph or Org Element
- TableFlip v1.4.0 Released
- DevCleaner for Xcode
- Mac App Notarization Workflow in 2022
- Shift-Click in Emacs to Select – A Simple Change With a Complex History
- Free Cmd-W in Magit to Close the Buffer
- Magit's Killer Feature #1: Commit Text Completion Based on the Diff
- @EnvironmentObject Is a Branched Global Variable
- Happy People = Mac Users
- Link Your Website to Mastodon via Metadata
- Dependency Injection and the Tree of Knowledge
- PSA: TextKit 2 Has Bugs
- STTextView: A TextKit 2 Text Editor without NSTextView
- Clean Downloads Folder on Mac with Hazel
- Weak Self -- Closure Rules of Thumb
- TextKit 2 Example App from the Apple Docs
- How to Upgrade Sendy from Version 5 to 6 from the Shell via SSH
- Center Window on the Current Monitor in Emacs, Simplified
- Transient Menus Galore
- Fixing Our Recent Xcode 13.3.x Dependency Cycle Errors
- How to Assemble Menu Bar App Screenshots for Mac App Store
- Aergrind by Knock Coffee Grinder, and Their Amazing Customs Duty Service
- Add Any Directory to project.el's List of Projects
- Get Your xcode.tips Card Printouts!
- Prioritize hl-line Highlight Over Neotree Faces
- More Swifty NSAttributedString Attribute Query Methods
- Context Menu in Magit Status Buffers
- The Playdate's Docs Are Made with More Love Than Most End Products
- What's the Problem With Old But Excellent Mac Apps?
- Split Window in Emacs and Resize and Recenter Frame to Make Room
- Add Numbers to Emacs tab-bar-mode Tab Titles for Quick Access
- Copy Dropbox Link to File Using Maestral
- I Uninstalled the Dropbox App in Favor of Maestral
- Closing Circe IRC Buffers in Emacs Without Leaving the Room
2021 51
- Remote Bulk Editing Using Regexp with Emacs
- SwiftUI Requires Platform Knowledge On Top. Case Study: Fonts
- What Do You Get When You Drag and Drop a PNG File From Finder Into an NSTextView?
- Don't Use Sparkle 2.x With Carthage
- Use macOS System Selection Colors in LIN for Emacs Line-Selection UIs
- Swift Pattern Matching Operator: Compiler Error when Specifying Enum Type and Case Name?
- Replacement for NSAppearance.performAsCurrentDrawingAppearance on macOS 10.14 and 10.15 to Fetch the Correct NSColor.cgColor
- NSTextView Performance May Degrade for Large Plain Text Documents When usesFontPanel Is Active
- Retry Imperative Conditions with RxSwift Using a Delay
- FastSpring Introduces Multi-Discount Coupon Codes
- How to Fix Mach-O Header Code 0x72613c21 When You Try to Export Your App in Xcode
- Open Magit for Current Repository from the Terminal
- Two Improvements to Open macOS Finder Window in Emacs Dired + Automator Quick Action Downloads
- Open macOS Finder Window in Emacs Dired
- NSTextView Bug: Automatically Scroll Insertion Point Into View Broken When Setting NSTextContainer's lineFragmentPadding to Zero
- TextKit 2 Introduces Block-Based Layout
- Trash File from Emacs with Put-Back Enabled on macOS
- I'm Thinking About the Gemini Protocol a Lot
- How to Print on macOS With An NSTableView and Customize the Result
- Single Function to Center Emacs Window on Screen
- Multi-Monitor Compatible Code to Center Emacs Frames on Screen
- Automatically Center New Emacs Windows (Aka Frames) on Screen
- Does 'Open Source' Lack Proper Gate-Keeping?
- Use macOS Native Highlight Colors for Emacs hl-line
- Notmuch Mail and Compatible Emacs Theme Updates
- Indie Support Weeks: Monodraw
- Using XCTUnwrap Instead of Guard in Unit Tests
- FloatingFilter Gets Rounded Corners
- Adding a Wiki to the Site
- Funding Open Source Software as a Third Party?
- a rare email
- The Archive 3rd Anniversary Giveaway
- The Beauty of Hacking Swift: Make Union of Set Algebra Types More Obvious
- MacSymbolicator: Tool to Symbolicate Your Crash Reports
- Refactoring Case Change Code to Idiomatic Emacs Lisp
- Change Case of Word at Point in Emacs, But for Real This Time
- #CamelCaseHashtags Could Improve Accessibility
- How to Add Backlinks in Nanoc Static Site Generator
- Backlinks Added to the Blog
- Emacs Org-Mode: Automatic Item TODO/DOING/DONE State Transitions for Checkbox Changes
- IPv6NAT in Unraid's Docker Containers Behind a Reverse Proxy to Make Outgoing IPv6 Requests Work
- When Code Signing of Frameworks Fails During macOS App Distribution, Make Sure ENABLE_BITCODE=NO
- SOLVED! Looking for Docker Reverse Proxy & IPv6 Setup Help (Paid)
- Disable NSTextAttachment Action and Sharing Services Menu Drop-Down
- Create Custom Org-Mode Links to Open My External Zettelkasten App
- A Short Note on Voice Assistants and Very Old People Who Don't Hear Well
- Atkinson Hyperlegible Font May Be Pretty Good If Your Granny Can't See Well
- XCTestExpectation via NSPredicate Is On a Slow Interval, Use This Instead
- WordCounter v1.6.4 Released
- NSSavePanel Crashes on Big Sur for public.csv UTI When You Don't Have a CSV Editor
- DuckDuckGo Site Search in Vanilla Forums Templates
2020 65
- Protesilaos Stavrou: Commend on Unix versus Emacs
- Indie Support Weeks: Working Copy - Fully Featured iOS git Client
- How to Profile Slow Scrolling (And Other Performance Bottlenecks) in Emacs
- Uberabout Makes Your App's About Window More Sexy
- Pulse to Highlight Yanked Text in Vanilla Emacs
- Markdown Mode Fixes Imenu Tag Generator
- Apple's App Store Small Business Program Enrollment Is Super Simple
- OpenMoji Support in emacs-emojify
- Decorate NSGlyphStorage to Replace Glyphs On-the-Fly
- TableFlip v1.3.0 Released
- Upgrading to Sparkle 2.x Branch
- Convert org-babel Markdown Blocks to HTML
- Making Emacs Autosaving of Files Ignore Email Drafts
- Zettelkasten Method Introduction
- Hide Traffic Light Buttons in NSWindow Without Removing Resize Functionality
- Shorten Emacs Yes-or-No Confirmation Dialogs
- Follow Link at Insertion Point in NSTextView
- Now Hiring: PHP/Laravel Web Developer
- Export Day One (macOS) Journals to Emacs org-mode Diary Entries
- Fix Your Damaged Mac App Store App by Parsing the App Store Receipt Dates Correctly
- NSRemindersUsageDescription Info.plist Key is Misspelled in the Documentation
- Indie Support Weeks: Use DropDMG to Create Your App Downloads
- Make RVM's Ruby Available to Emacs Shell Commands
- Add HTML Entity Picker to Emacs
- Experimenting with a Switch from Disqus to FastComments
- Demonstrate Swift's Lazy Initialization of Static Attributes Even when Using a Property Wrapper
- Adopting the Linktree Convention to Redirect People to My Projects
- Implement Pixel-by-Tile Movement in Godot
- Comparing 2D Collision Detection and Hit-Testing Approaches in Godot 3
- How to Decode Human-Readable JSON Strings to Integer-Based Swift.OptionSet
- Patching console.log into Swift's JavaScriptCore JSContext
- Add Subscripts to JavaScriptCore Types in Swift
- TableFlip v1.2.3 Ships with CSV Fixes
- h-now Aggregator Live Demo on Heroku
- FSCheckoutSheet: In-App Purchase Sheet for Your FastSpring Store
- Structure and Interpretation of Classic Mechanics – A Physics Book with Code
- Blog Series: TableFlip's NSDocument File Type Issues and Fixes
- Proposing the h-now Microformat to Mark-Up All Our /now Pages
- Digital Gardening: A Renaissance of Open Thinking and Curated Writing on the Web
- Define and then Hide a New Document Type
- How to Create a NSSavePanel accessoryView in Swift to Pick File Formats
- Programmatically Select a NSSavePanel File Format to Fix Empty Selections
- Sorting Out Overlapping File Types
- Sandboxing and Declaring Related File Types
- Observations of the Curious Problem of NSDocument-Based App Changing the File Extension
- Delete the Next Word or the Current Selection in Emacs with the Same Shortcut
- Indie Support Weeks: beorg
- Indie Support Weeks: Soulver
- Getting Rid of kCGImageSourceTypeIdentifierHint Error when Loading NSImage from a File
- Now Hiring: Freelance Mac Dev
- Auto-Growing NSTextField
- Boilerplate to Add AppleScript to Your macOS App in 2020
- NSProgress with KVO-based Finish Callbacks
- WhatsNewKit v1.2.0 Supports Multiple Update Notices at Once
- Natural Language Toolkit Word Counter
- Newsletter Form Fixed
- Thread Safe Property and Resource Access with the Transaction Wrapper
- Swift API Docs for String.index(_:offsetBy:limitedBy:) Is Still Misleading
- MultiMarkdown Filter for nanoc
- Lock App Features Behind a Paywall and Enforce the Lock in Code
- Show Light Text on Dark Recessed NSButton with an Image
- Whole Value Pattern
- Maybe Call Your UI Configurion Objects ViewData Instead of ViewModel
- AppMover Swift Library to Move Your macOS App to the Applications Folder
- Community Trumps All
2019 112
- SwiftRex - Redux for Swift with Reactive Capabilities
- Facilitate Non-Artists to Sketch
- microsoft/PLCrashReporter v1.4.0 Released
- Center Odd Shapes in Keynote Spin Animations
- UserDefaults Access via Property Wrappers Is Worse Than You Might Think
- Print Current Date and Time in Emacs Minibuffer
- Guilherme Rambo Was Temporarily Locked Out of His Apple Developer Account
- Split a Markdown File by Its Headings
- Dash 5 Documentation Browser for Mac is Available
- Native macOS Notifications for Emacs Org Tasks and Appointments
- FourLayerArchitecture Is Still Under-Appreciated
- That Weird Obstable of Interface Builder When You Get Started With iOS Development
- Black Friday Deals 2019
- Working on the Zettelkasten Online Course
- WordCounter v1.6 Brings Analytics to Your Productivity!
- X-Oriented Programming, Using Functions or Classes?
- Win32 API Programming With Swift
- ExactScan Leaves the Mac App Store
- Reducing the Blog Post Email Digest To Once a Week
- Model-View-Presenter, Form Validation, and a Unidirectional State Machine
- Xcode Bug Turns Out To Be the Hardened Runtime Setting
- Fix Missing Font Fallbacks for NSTextView
- Building a Rich Domain In Iterations
- Prevent Emacs Compilation Window From Displaying Other Content
- Quit and Close Emacs Special Windows Like Help and Compilation Results
- Emacs Settings for PHP Development
- The Archive Update Hiatus Due to a Severe Bug in Xcode 11
- Starting PHP Development in 2019: Project Setup and Dependencies
- Making os_log public on macOS Catalina
- Xcode 11 Displays Crash Logs in Context of Your Projects
- Processing David Epstein: Range (S01E04)
- Website Page Design Overhauled
- "Make Money Outside the Mac App Store" Second Edition Ebook Available
- Pros and Cons of the Mac App Store
- Macoun 2019 Code Retreat Workshop Postmortem
- Comparison of E-Commerce Platform Alternatives to the Mac App Store
- Processing David Epstein: Range (S01E03)
- September App Updates
- What to Do When You Want to Affect the Order of Subscription Callbacks in ReSwift
- Processing David Epstein: Range (S01E02)
- Add an Internet Access Policy to Your App
- Calendar Paste v3.3.0 Hits the App Store
- Always Ask for MailChimp Newsletter Reconfirmation Outside of MailChimp
- Don't Wait. Show Up. Or It Might Be Too Late Again
- Processing a Book to Extract Notes, a Video
- Make Money Outside the MAS v2 Book Writing Stage is Done
- Newsletter Revival
- TextMate v2.0 Was Released
- State of the macOS Developer Platform Choices
- Please Also Change Your Feed URL's Inside Your Apps
- Redirect Your DevMate Sparkle Update Feeds Now
- Fira Code 2 Released
- I Am at Macoun 2019
- Wireframe for Server-Side License Activation
- Become an Acquired Taste
- UINavigationController Inside a Popover
- With DevMate Closing Shop, Here's What You Can Do
- Prying Open the Vanilla Forum Control Flow to Create Discussions in Embedded Forms
- Detect When Your macOS App Has Been Moved During Runtime
- Live FastSpring Store Examples
- Looking for a Family Altar's Totem
- Book Updates Underway
- Find Non-64-Bit Apps Using the Free Go64 Tool
- The Archive v1.4.0 Released, Introducing Tabs
- NiftyMenu -- Automatically Recreate a macOS App Menu Bar in HTML
- Empty NSWindow Title Invisible in Window List
- Paid Up Front: Two Perspectives to Make this Business Model Work to Your Advantage
- Variable Name Conventions in Tests
- Implement NSWindow Tabbing with Multiple NSWindowControllers
- The World's Most Comprehensive Guide to Implementing Programmatic Creation of Tabs in a Single NSWindowController That You Shouldn't Adhere To
- How I Never Forget to Pack Stuff in My Backpack
- Convert MS Word DOCX Files to Markdown with Images
- Lightweight CrashReporter Library for Mac Released
- Move! Work Break Timer v1.4.0 Released
- Fixed Code Highlighting on the Blog
- Find Out if Xcode/LLDB Debugger Is Attached to Current App
- Fold Current Level-1 Heading in Emacs Org-Mode Outlines
- Combine E-Book for Free
- Post Overview Updated
- Slides for the "More Money, More Control" Webinar on Selling Outside the Mac App Store
- Existing NSWindow Show Notifications Don't Work
- TableFlip Mac App Store Experiment Stats: Sources
- WordCounter for macOS Version 1.5.0 Released
- Reference Xcode Configuration Variables in Objective-C
- React to NSWindow Showing in Your App
- Xcode Project Setup to Build, Embed, Codesign, Notarize, and Use the Sparkle XPC Services
- How Do You Activate Sparkle's XPC Services?
- How to Migrate to the New Sparkle Updater XPC Branch
- Use Shared NSUserDefaults for XPC and Interface Builder Nibs
- Imposing Bans and App Store Sanctions
- Free Amazon S3 and CloudFront Hosting for Students
- From bash to zsh on macOS
- Browser-Like Navigation in The Archive
- embetty Embeds Tweets and YouTube Videos Without the Tracking Code
- Python Context Manager Compared to Ruby DSLs
- How to Add Files to mpd using python-mpd2
- Emacs for Remote SSH Python Development
- Mac App Store Proceeds for TableFlip Without Marketing Campaigns
- Finding the Field Editor in UI Tests
- Being Afraid to Change a Working App
- TableFlip Is Now Available on the Mac App Store
- Using Drag and Drop with NSTableView
- Hosting Downloads on Amazon S3 with CloudFront
- Fixed the Blog Archive
- Sync Emacs Org Agenda Files via Dropbox Without Conflicts
- Add Navigation Buttons to NSTouchBar
- Replacing More Reference Objects with Value Types
- Do Not Apply Code Heuristics When You Need a Broader Perspective
- Refactoring The Archive's ReSwift Underpinnings
- Replace RxSwift View Model Types with Free Functions
- Programmatically Add Tabs to NSWindows without NSDocument
- NSAppearance Change Notifications for Dark Mode and RxSwift Subscriptions
2018 36
- WordCounter v1.4.0 Released with Mojave in Mind
- Find Swift Classes from Objective-C Tests
- Fix NSSegmentedControl Action Forwarding from Your NSToolbar
- Parse Boolean Search Expressions in Swift
- Fixing Ruby ncurses Unicode Character Display on Linux Terminals
- How to Fix fileReferenceURL() to Work with NSURL in Swift 3 and Swift 4
- React to Programmatic Changes to NSControl.state in RxCocoa
- Remove Trailing Whitespace in TextMate 2 Code Files
- ReSwift Custom Diffs and Enqueued State Updates
- Synchronize Scrolling of Two (or More) NSScrollViews
- NSTextField usesSingleLineMode Stops Working When You Implement NSTextViewDelegate Methods
- Better Form Model Validation
- Use RxSwift Observable Instead of Result for Failure Handling
- Format Strings with Templates in Swift
- Validate Temporary Form Models
- Panic's New Pricing Model for Transmit on the Mac App Store
- Programming Does Not Grow Up
- Add Blog Post Text Template Expansion to Emacs with Org Babel
- Bye, Bye, Google Analytics
- Indent Code and Lists by 4 Spaces in Emacs Markdown Mode
- Move! Work Break Timer Update 1.3.0
- Global TODO Capture Hotkey for Emacs Org Mode on macOS
- RxSwift: Typing/Idle Event Stream for NSTextView
- Mac Developer Survey 2018
- Broken Help Menu Breaks Rather Unpredictably
- Plain Controllers to Ease the Burden of View Controllers
- Put Test Files Next to Production Code for Better Discoverability?
- High Sierra: Help Main Menu is Broken and Freezes Apps
- A Visually More Accessible Disabled NSColorWell
- The Archive Is Available Now
- NSTextView's Default Insertion Point and Selected Text Colors
- Launch of My Next App, The Archive
- How I Avoided Over-Architecting a Simple Event Handler with ReSwift, Cheating with Existing Reactive Code
- Behind the Scenes of Programming 'The Archive': How Much Coffee Did I Consume?
- From Timing with Love: Valentine's Day Productivity App Discounts
- NSTextView: When Did the Find Bar Disappear?
2017 54
- Exposing the MultiMarkdown 6 Library to Swift, Part 1: Swifty Enums
- Month 13 Is Out Of Bounds
- Why the Selection Changes When You Do Syntax Highlighting in a NSTextView and What You Can Do About It
- Blogs Merged Back Into One
- Dependency Injection via the Recent "Cake Pattern in Swift" Pattern is Useless in Practice
- Is the Mac mini (Mid 2011) a good developer device in 2017?
- Inject ReSwift Middlewares from Different Project Targets During Runtime
- To Subscribe or not to Subscribe? Not!
- Show a fat iOS-Style Insertion Point in NSTextView
- How to Use NSGlyph in Swift
- Setting the NSTextView Line Height in a Beautiful Way
- Typewriter Mode: Adding Overscrolling to the Text View
- Scroll NSScrollView Programmatically Without Showing the Scroller Knobs
- macOS Storyboard Outlet-Like Connections Between View Controllers
- NSSplitViewItem Vibrancy Is Not Added with Every Initializer
- Fixing NSTableView Cell Backgrounds by Deactivating NSSplitViewItem's Visual Effects
- ReSwift Niceties: The Current State Getter
- Adding last(where:) in Swift
- The 3 RxSwift Building Blocks of UI Components
- WebcamSnap Open Source Library Released
- Do You Need to Use Action Creators in ReSwift to Conditional Action Dispatching? (No)
- Adding RxSwift Ports to Resolve UI Inconsistencies
- Sorting Markdown Tables by Column from the Shell
- Week #18 of 2017 in Review
- ReSwift v4 Released
- Drawing Custom Alternating Row Backgrounds in NSTableViews with Swift
- Accessibility-Awareness Raising with a Super Mario Video
- Week #17 of 2017 in Review
- One Way to Solve Inexplicable Race Conditions in Tests
- SwiftyBeaver: Record to Array
- The Archive – Mac App Beta
- Swift Protocols with Default Implementations as UI Mixins
- Website Changes Imminent
- Clean Cocoa Blog Redesign
- FatSidebar View Component for macOS Released
- Non-Obvious Swift: Defer
- Setting the Line Height of a NSTextView
- How to Make ReSwift Actions Undoable with NSUndoManager
- Handle Pending File Changes with ReSwift as Your Backbone
- Recording of Wednesday's Webinar
- Make Money Outside the Mac App Store – Swift 3 Update
- Register for My Webinar About Ditching the Mac App Store
- Express Either–Or-Relationships as Enums
- How to Unit Test Dispatching ReSwift Actions from RxSwift Observables
- Core Data is Invasive. You Can Hide It, Or You Can Embrace It
- “Bugs are the edges of what works”
- Better Swift FileManager File Existence Checks
- Shopify's Ruby on Rails app statistics
- Refactoring – Extract Objects Horizontally or Vertically
- Framework Oriented Programming and It's Relation to OOP
- A Look at the ReSwift Event Log During Launch of My Latest Project
- How to Save File Changes Using ReSwift Actions
- InfiniteCanvas – Vector Drawing App Concept
- Swipe Transitions and ReSwift
2016 131
- Innocent Arrow Diagrams
- Always Pay Attention to Implications of Technical Advice
- Lifting Into a New Type: My first "Idiomatic" RxSwift Unit Test
- It's the Worst Time to Go Open Source Because So Many Stupid People Will See It
- Open Source and the Open, Distributed Mindset
- Dan Counsell's Mac App Store Wish List
- RocketData is a Uni-Directional UI Component Data Source
- Debugging NSBeep Error Sound in NSResponder Method Calls
- BundleHunt Experiment
- "Exploring Mac App Development Strategies" 4th Extended Edition Now Available
- Resolving NSTreeController's "Ambiguous use of 'children'" in Swift 3
- Let Them Perish
- Clean Swift aka VIP Architectural Approach
- My Declarative Breakthrough: Wherein I Stop Thinking in Terms of Object Collaboration
- How to Refactor Messy Apps for a New Architecture?
- MVVM's Place in Your App
- Developer Documentation App Dash Removed from App Store – and No-One Can Do a Thing
- TableFlip Launches
- Apple Introduces Search Ads
- Breaking NSLocale API Changes Revisited
- Magic Numbers Represent Concepts
- Swift 2.3 NSLocale UIKit API Changes Break iOS 8 Compatibility
- On Proprietarity of File Formats
- Comment On "Real World Flux Architecture on iOS"
- TableFlip Will Be Released in October!
- Tests Are Just Code, Too
- Global State Was Preferred Because Typing Sucks
- Programmer, Interrupted
- On Software Feedback
- Assertions in Swift Kill Your Code
- Switch VS Checkbox in User Interface Design
- Putting ReSwift Actions on the Undo Stack Using Middleware
- When You Code, You Design Both Structure and Information Flow
- MVVM Is Quite Okay at What It Is Supposed to Do
- Racing To the Top
- Transparent NSTableView Headers
- NSDocument Weirdness: Sheet Contents Appear Disabled
- the blog archive
- Ownership of the Apps You Use: Ulysses App Pricing, Subscription Models, and the Death of Licenses?
- On Reaching Mastery
- What Projects Do You Identify With? Maybe They Drag You Down
- Implementing CollectionType in Swift 2.x
- Revamped Blog Archive
- Splitting the View Models of TableFlip, a Short Aftermath
- I'll Split Up the Monolithic View Model in TableFlip. Here's What I Expect to Happen
- How PlanGrid uses a Flux-Inspired Architecture to Simplify State Management
- TIL: How to Make NSTextView Reject Newlines
- Iteratively Improving Your App: Decoupling Components at Module Seams and Adding Facades
- First Contact with AppKit for iOS Developers (Under the Radar #26)
- I love Swift's Expressiveness
- UIStackView For Showing And Hiding User Interface Controls
- Conflicting Mental Models in TableFlip's Interface Design
- Separating ReSwift Actions from UI Events
- TableFlip Closed Beta Invitations
- Check Boxes in AppKit
- Location Matters
- objc.io Books 30% Off
- Disabling Segments in a NSSegmentedControl in a Toolbar
- How to Create a Segmented NSToolbarItem like Apple Mail.app
- Coding TableFlip: the Bigger Picture
- Configuration Objects and the Then Microframework
- Principles of Object-Oriented Design in Swift 2.2
- TIL You Can Cancel Enqueued GCD Blocks
- Hustling
- The Surprising Intricacies of Editing Parts of NSTableView
- Custom Enumerated Sequences in Just 1 Line of Code
- Evaluate and Launch Your Idea With Small Steps
- Swift Depends on Objective-C
- Outperforming the Competition
- Better Sliding Menus
- Calendar Paste 3 FREE this Week
- How to Abort a Chain of Rake Tasks on Error
- How to Get Started with Swift: Write New Tests in Swift
- App Pricing and How to Make More Money
- What I Did When I Found Emojis in Strings Always Lost the Last Byte
- Replacing Loops with Mapped Ranges
- Type-Safe Storyboard Segues
- Productivity Tips for Programmer Solopreneurs
- The Power of Guard
- How to Edit NSTableView Headers with a Double-Click
- Refactoring to Clean Value Transformations in Swift
- Use Xcode Deprecation Warnings to Refactor
- Currying and Treating Instance Methods as Curried Functions
- The Swift Developer's Cookbook Review
- 5 Heuristics for "I have a complicated nested view controller setup. How do I handle passing data?"
- Swift Selector Syntax Sugar
- Book Updates for Swift 2.2
- Translate Optional Delegate Protocol Methods to Swift Block-based Event Handlers Using Nested Objects
- Blocks: Useful to Perform Actions In Context
- VIPER by Experience: How to Set Up an iOS Project
- How I Toggle or Switch 2 NSMenuItems from the Main Menu
- Extend View Controllers with Behavior Objects Right from Within Interface Builder
- Creating a Cheap Protocol-Oriented Copy of SequenceType (with a Twist!)
- Announcing TableFlip
- How to Create Fixture Files for Unit Tests
- Creating a Lens for an Object to Provide a New Public Interface
- A Vacation Week – 20% Discount While I'm Away!
- Reusable View Components from Nibs
- Featherweight Router
- Now page
- Import Parts of a Module
- Ignoring UILocalNotifications When the App is Running
- rethrows in Swift
- MVC on iOS Done Right
- My Desk 2016
- How do You Really Mock Objects You Don't Own? You Replace Them with Adapters
- DevMate is Completely Free Now
- Piezo Exits the Mac App Store
- Information Flow and Stateful Buttons
- Uni-Directional Flow of Information with Realm
- Publish and Subscribe — Decoupling Deep View Hierarchies from Event Handlers
- Inline Blocks as Result-Producing Helpers
- Extract Private Functions as Collaborators
- Symmetry
- 1 Criterion to Determine if You Should Write Unit or UI Automation Tests
- Always Write Functions to Cope with all Possible Parameter Values
- Use and Misuse of Helper Functions
- Block-Based API vs. Delegates – a Comparison
- Make Money Outside the Mac App Store now Available on Amazon
- Move! Review at Softpedia
- Mind Node adds Tasks
- Flow Controllers to Replace Segue-based View Transitions
- ReSwift, Law of Demeter, and Another Level of Indirection
- Events as Declarative State
- Extending Types with a Conversion Factory: Where Should You Put It?
- I'll be writing a Word Counter Swift module fully East-Oriented
- How to Couple UITableView Cell Identifiers and View Models
- Separating State from State Changes
- How Closures are a Better Event Handler Protocol Alternative
- iRamDisk May Speed Up Your Xcode Compilation Times
- Get Your App Indexed by Google
2015 103
- Making Cocoa the Outermost Layer
- Encapsulate a Process in a Single Line Using Bind and Good OO Design
- Segues: How to Use Them While Saving Lines of Code
- Separate Read Model from Write Model to Support Complex Forms
- iOS View Architectures and VIPER Explained
- Make Money Outside the Mac App Store
- Yelp's Modular UITableViews
- Extract UITableView Contents and Configuration Into Helpers
- Configuration Objects: Delegate Initialization to a Parameter
- Parameter Objects Simplify Your API Versions
- Presenter and MVVM for UITableViews?
- How to Handle Errors When You're Not Interested in the Details
- Switching iOS App Login Methods by Creating Your Own Simple Login Module
- Tips to Conquer Massive View Controllers
- Ruby 2.3 Will Have Optional Chaining
- Jiggle GCD Queues to Find Problems
- Modeling: From Structured Data Representation to Problem Domain
- Swift OS X Programming for Absolute Beginners Review
- Core Data Calls Them Contexts for a Reason
- Ideas to Solve Background Fetching and Saving Race Conditions with Core Data
- Productive Writer's Bundle Sale
- What It Means to Domain-Drive Your Design
- Word Counter Now with File Monitoring
- Don't Build on El Capitan Without Checking App Transport Security
- NSOpenPanel's and NSSavePanel's Block-Based API is Superior
- Small Helper Objects Take You Far
- How I Solve the Unexpected Error Handling User Experience Problem
- Make Custom Debug Build Configurations Play Nicely With CocoaPods
- Optional Protocol Methods in Swift using Closures and No Protocol, Actually
- Achieve More with a Variety of Value Objects in Swift
- Decouple UI from Model with View Models and Controls
- How to Move Bootstrapping Code Out of AppDelegate
- Transactions and Rolling Back Changes in Core Data with UnitOfWork
- Leave a Rating for Move! app on MacUpdate
- Put Usage of a CoreDataFetchRequest out of Your Code and Into ... Where Exactly?
- Revisiting the Core Data + Domain Model Architecture
- Expressive Domain Model, Core Data, and You
- Chaining Events, Take One
- How I Now Deal with Collapsible Split View Controllers on the iPhone 6
- Universal Deep Linking on iOS: Design Each Scene to Be Remarkable
- Move! – Work Break Timer Now Ready for El Capitan
- Swift Protocol Extensions as Mixins – And How Do You Test That?
- Testing Shorthand: Use a Subclass of the Real Object Under Test
- Make Money with Mac Apps Outside the MAS: E-Book Prerelease, Need Feedback
- Using Guard in Unit Tests
- Save Yourself Casting Headaches with a Generic Fetch Request Object
- How to Change the Detail of a UISplitViewController in the Background
- Dismissing a Modally Presented Scene on Both iPad and iPhones Using Unwind Segues
- Weird EXC_BAD_ACCESS in Swift 1.2 Was Due to A Compiler Bug
- How to Create Flexible Components with Two Levels of Service Objects
- What is CLEAN Code?
- Move! – Work Break Timer Release
- Where Instead of Using Functional Bind, I Create an Expressive Model
- Create UML Diagrams Quickly with Draw.io
- Cut-Out Animation of a Table View Cell Into the Next Scene
- From East-Oriented Programming to Functional Bind
- How to Write Pragmatic, Testable Singletons in Swift
- Refactoring Legacy Code: Replace Free Function in Tests, Even Swift's Own Functions
- Support the Word Counter With a Review
- Library for Providing Static UITableView Contents in Swift
- “Exploring Mac App Development” Updated for Swift 2.0 + Coupon to Save 50%
- How Coursera Uses VIPER to Architect Transitions Between App Features
- Refactoring a View Controller for Clean Information Flow
- Using Blocks to Realize the Strategy Pattern
- Clean Coding is a Programming Misnomer for a Software Engineering Principle
- How I prepare Calendar Paste E-Mail Pitches
- Protocol Madness: Comparing Apples to Oranges from the Vantage Point of Fruit
- How to Write Unit Tests for Storyboard-based Buttons in Swift
- Using Swift Enums to deal with Storyboard Segues
- So I've finished my model, now what?
- Freemium won't solve your problems magically
- Generics in Objective-C
- Be Cautious with Try-Catch for error handling in Swift 2.0
- Test doubles for Core Data managed objects might not work as expected
- State of Mocking in Swift Tests
- This is probably the nicest Swift Result enum ever
- Observing Enums in Swift 1.2 with KVO
- Combining Collection-Like Repositories and East-Oriented Code
- Calendar Paste 2.2.0 Release Is Out
- Swift Extensions and Information Hiding
- Success and Error Callbacks in Objective-C: a Refactoring
- Return Types can Capture Async Processes and Failures
- Book Updates for Swift 1.2
- Functional Programming in Swift (YouTube Videos)
- Event Publisher Revision 1
- Painless Event Delivery With a Custom Publish-Subscribe Infrastructure
- Save Your Butt in Unit Tests With Shallow Reaching
- Zettelkasten Posts Moved
- VIPER iOS App Architecture Approach
- 3 Ways to Model Relationships in a Domain
- Split Commands and Informational Return Values Apart Using Events
- Going Beyond Guard Clauses in Swift
- Plug-in a UITextView Placeholder Label Extension
- Functional Error Handling in Swift Without Exceptions
- Use Double-Dispatch and Polymorphism to Get Rid of Conditionals
- Crafting Wicked Domain Models by Jimmy Bogard
- Thinking in Terms of Functional Programming Encourages Clean Factoring of Code
- How John Sonmez Helped Me Streamline This Blog
- How to Resolve Word Counter Update Issues
- Model–View–View Model (MVVM) Primer
- Getting XPC to a Helper App Working with Sandboxing Enabled
- Subscribe to My New Mailing List
- Storyboard Segues VS Tell Don't Ask Principle
2014 48
- Model-View-View Model in Swift
- Making Good Use of Singletons in Refactoring the iOS App Calendar Paste
- Calendar Paste 2 is now Open Source
- DEVONthink and Zettelkasten
- “Exploring Mac App Development Strategies” Released!
- I'm About to Release a Little E-book on Domain-Driven Design and Mac Application Development
- Idea Indexes of Books Flickr Group
- Core Data Violates DDD Principles by Default
- The Word Counter, NaNoWriMo, and You
- Summer Knowledge Challenge 2014
- How I Edited my Last Zettelkasten Post and Came up With Something Even Shorter Than the Post Itself
- Making the Word Counter More Useful
- gitlogger updated to deal with UTF-8
- How I Prepare to Work on a Research and Writing Project
- Introducing Myself on Zettelkasten.de
- New Zettelkasten Blog Is Now Open
- Self-Fulfillment and Growing Up
- Composing and Revising – The Two Modes of Writing
- Word Counter v1.1.0 – Now With Daily Usage Statistics
- Challenge: Apply the Knowledge Cycle to Reading a Single Book
- Feed for All Zettelkasten Posts
- New Article Overview
- Use a Short Knowledge Cycle to Keep Your Cool
- Edit HTML with TextEdit for Mac
- Word Counter (Mac) is Available Right Now!
- Make Writing a Part of Your Identity
- How to Track Your Writing Progress
- Include Images in nvALT for a Multi-Media Zettelkasten Experience
- Developing a Word Counter for Mac – Apply as a Tester
- Tapping Test app released
- Calendar Paste v2.1.0 released
- How I use Outlines to Write Any Text
- Building Blocks of a Zettelkasten
- The Zettelkasten Platform – 2 Ways You Can Contribute
- SlipBox (Mac) Note Archive Review
- Lessons Learned from Losing All Routine
- Using nvALT as a Zettel Note Archive
- Baseline for Zettelkasten Software Reviews
- The Need to Craft
- Calendar Paste 2.0 – the iOS 7 Update
- Reading Habits: Putting It All Together
- You Only Find What You Have Identified
- Learn Faster by Writing Zettel Notes
- Editorially is Shutting Down. What About Alternatives?
- Note-Taking when Reading the Web and RSS
- Count Your Words to Increase Your Productivity
- Looking for Alpha Testers
- The Collector’s Fallacy
2013 23
- How to Make Daily Writing Practice Useful
- I Enabled Comments for Some Posts
- Preparing Fragments Helps You to Ease Into Writing
- Extend Your Mind and Memory With a Zettelkasten
- Announcing a Zettelkasten Info Product
- Manage Citations for a Zettelkasten
- Solve database mapping problems and the impedance problem of ActiveRecord
- Ruby RSpec/Guard/Spork Project Boilerplate
- Create Zettel from Reading Notes
- Unlock 802.1X wired internet via OpenWRT on TP-Link WA901ND
- Making Proper Marks in Books
- Create a Zettelkasten for your Notes to Improve Thinking and Writing
- gitlogger Improved
- Generate interactive documentation with Code Guide
- My Workspace
- Calendar Paste.app development notes (Series)
- Prototypes for Calendar Paste
- Outlining and Plain Text
- Rails.js XHR form callbacks fixed for invalid submissions
- Sales and AppLaunch.us experience for Calendar Paste
- Birthday of my deceased baby brother
- CriticMarkup and a TextMate Bundle
- Interlude: first month of app sales
2012 8
2011 2
2010 9
- Awesome new Notational Velocity
- Bringing Notational Velocity to a new level of massive text editing
- Multi-Markup Notational Velocity
- How did Steve add Markdown to Notational Velocity?
- Too many Notational Velocity forks?
- Notational Velocity fork with fullscreen mode, menubar app, and more
- Markdown HUD for Notational Velocity
- Markdown Preview for Notational Velocity
- Introducing MultiMarkdown Notational Velocity