Emptying Caches When macOS Reports Memory Pressure
NSCache evicts entries on its own when memory gets tight, but a plain Swift dictionary keeps everything until you clear it. Read more of Emptying Caches When macOS Reports Memory Pressure →
My name is Jake Marsh. Inventor 💡 Founder 👨🏻💻 Creator 👨🎤 Writer ✍🏻 Lifeform 👽
Multimeter is my new Mac menu bar app: live meters for your battery, CPU, network, timers and your own…
How I ship each Mac app two ways from one codebase: a notarized, Sparkle-updated build sold on my site and a…
CallForMe lets the agent you already use call businesses for you: it works phone menus, waits on hold and…
BankBridge gives your agent read-only access to your bank accounts over MCP, so you can ask about spending…
NSCache evicts entries on its own when memory gets tight, but a plain Swift dictionary keeps everything until you clear it. Read more of Emptying Caches When macOS Reports Memory Pressure →
Postage, my Mac email client, keeps two SQLite databases. emails.db is a cache of mail that can always be downloaded again, and rules.db holds data that exists nowhere else. Read more of SQLite's synchronous = NORMAL, And When Not To Use It →
When someone pastes your MCP server’s URL into Claude or ChatGPT, a sign-in window should open. What makes that happen is one HTTP response from your server. Read more of How Remote MCP Servers Trigger OAuth Sign-In →
Every text file on Deallocated Objects is compressed before it reaches the server. The generator writes index.html, then writes index.html.br and index.html.gz right next to it, and nginx picks whichever one the browser asked for. Read more of Serving Precompressed Brotli And Gzip From Nginx →
This blog has a small newsletter. When a post goes live, a little Bun service on my server emails it to everyone who signed up (it sends through Resend). Every one of those emails has to make leaving easy, and since 2024 Gmail and Yahoo have spelled out exactly what “easy” means for bulk senders. Read more of One-Click Unsubscribe The Way Email Platforms Want It →
You can follow this blog from Mastodon. Search for @blog@deallocatedobjects.com in Mastodon, Ivory, Ice Cubes or any other fediverse app, tap Follow, and new posts show up in your home timeline next to everything else you read. The blog itself is a static site. Read more of A Small ActivityPub Server For A Static Blog →
Every Mac app I sell from my own site goes out the same way. It’s signed with Developer ID, notarized, stapled, put in a DMG, and then the DMG gets signed, notarized and stapled too. The steps are well known. The order is where people get bitten, along with which file each step applies to. Read more of Notarizing And Stapling A Mac App For Direct Download →
Battery health on a Mac lives in the AppleSmartBattery entry in the I/O Registry. System Information shows numbers from it, and so does the battery meter in Multimeter, which is where I ran into this. Read more of Reading Mac Battery Health From IOKit →
Most of my Mac apps live in the menu bar. Shake It On, Multimeter and Refrain all set LSUIElement to YES in their Info.plist, so there’s no Dock icon and no app menu, only a status item. Read more of Menu Bar App Windows That Open Behind Everything →
Multimeter can show your Mac’s fan speed. There’s no public API for that, so it asks the System Management Controller through IOKit: open the AppleSMC service, then call IOConnectCallStructMethod with a struct going in and the same kind of struct coming back. Read more of Swift Tuples Drop Their Tail Padding →